Ich möchte alle Wörter (alphabetisch) in der Zeichenfolge in ihre Abkürzungen wie i18n konvertieren. Mit anderen Worten, ich möchte "extraordinary"
in "e11y" ändern, da zwischen dem ersten und dem letzten Buchstaben in "extraordinary"
11 Zeichen stehen. Es funktioniert mit einem einzelnen Wort in der Zeichenfolge. Aber wie kann ich das Gleiche für eine Mehrwort-Zeichenfolge tun? Und natürlich, wenn ein Wort <= 4
ist, hat es keinen Sinn, eine Abkürzung daraus zu machen.Stuck in Abkürzung Implementierung zu Ruby String
class Abbreviator
def self.abbreviate(x)
x.gsub(/\w+/, "#{x[0]}#{(x.length-2)}#{x[-1]}")
end
end
Test.assert_equals(Abbreviator.abbreviate("banana"), "b4a", Abbreviator.abbreviate("banana"))
Test.assert_equals(Abbreviator.abbreviate("double-barrel"), "d4e-b4l", Abbreviator.abbreviate("double-barrel"))
Test.assert_equals(Abbreviator.abbreviate("You, and I, should speak."), "You, and I, s4d s3k.", Abbreviator.abbreviate("You, and I, should speak."))
Dank @KirillZhuravlov für die Kennzeichnung eines Fehlers, den ich gemacht habe. –
Ich dachte anfangs, dass die Konvertierung nur auf Wörter oder Bindestriche angewendet wird. Ich habe meine Antwort geändert, um mit Strings umzugehen. –