将多个gsub语句重构为1

Nat*_*ers 4 ruby gsub

尝试将其重构为一行以使字符串中的所有元音都被大写.我尝试使用哈希,但失败了.尽管我尽最大努力查找它,但在Ruby上还是太新了解任何替代方案.就像是....str.gsub!(/aeiou/

def LetterChanges(str)
  str.gsub!(/a/, "A") if str.include? "a"
  str.gsub!(/e/, "E") if str.include? "e"
  str.gsub!(/i/, "I") if str.include? "i"
  str.gsub!(/o/, "O") if str.include? "o"
  str.gsub!(/u/, "U") if str.include? "u"
  puts str
end
Run Code Online (Sandbox Code Playgroud)

Aru*_*hit 7

最好的方法是

str.tr('aeiou', 'AEIOU')
Run Code Online (Sandbox Code Playgroud)

String#tr

返回的一个副本str,在字符from_str 替换为相应的字符to_str.如果to_str比from_str短,则用最后一个字符填充它以保持对应关系.