我想將字符串中的所有單詞(字母)轉換爲它們的縮寫,如i18n。換句話說,我想將"extraordinary"
更改爲「e11y」,因爲"extraordinary"
的第一個和最後一個字母之間有11個字符。它適用於字符串中的單個單詞。但是我怎樣才能對多字串做同樣的事情呢?當然,如果一個單詞是<= 4
,沒有必要從它縮寫。陷入縮寫實現ruby字符串
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."))
感謝@KirillZhuravlov標記我犯的一個錯誤。 –
我最初認爲轉換隻適用於單詞或帶連字符的單詞。我修改了我的答案來處理字符串。 –