rue*_*azy 1 ruby loops acronym
我正在创建一个函数,它接受一个字符串并创建一个首字母缩略词,但遇到了错误。当我输入时,"Complementary metal-oxide semiconductor"我会"CS"在期待时得到回报"CMOS"。有什么建议为什么会发生这种情况吗?我向它传递了很多其他字符串,它可以工作,只是在这种情况下不起作用。
class Acronym
def self.abbreviate(phrase)
letters = phrase.split("")
acronym = []
letters.each do |letter|
previous = letters.index(letter) - 1
if previous == -1
acronym.push(letter)
elsif letters[previous] == " " || letters[previous] == "-"
acronym.push(letter)
end
end
acronym.join("").upcase
end
end
Run Code Online (Sandbox Code Playgroud)
简化为
def acronym(str)
str.split(/ |-/).map(&:first).join.upcase
end
Run Code Online (Sandbox Code Playgroud)
以上依赖于Rails activesupport库。这是仅 Ruby 的变体:
str.split(/ |-/).map { |s| s[0] }.join.upcase
Run Code Online (Sandbox Code Playgroud)