在Ruby中,反转字符串中的单词,不改变顺序和空格数



我想反转字符串中的所有单词,这样

  1. 单词的顺序不应更改
  2. 单词中的空格数应保持不变
例如:-当我的字符串是"How Are You"时,它应该返回"woH erA uoY"

我尝试了一些类似于的东西

def reverse_string(str)
  arr = str.split(" ")
  new_arr = arr.collect{|a| a.reverse}
  new_arr.join(" ")
end

但它不适用于单词之间可能有多个空格的字符串。

s = "How     Are  You"
s.gsub(/w+/) { |match| match.reverse }

这是最短的,可能也是最快的。字符串是regex'ed,所有连续的单词字符都按顺序反转

s = "How     Are  You"
s.gsub(/w+/,&:reverse) 
=>woH     erA  uoY

这很有效。在中使用正则表达式拆分任何单词边界字符

def reverse_string str
  arr = str.split /b/
  new_arr = arr.collect {|a| a.reverse}
  new_arr.join
end

最新更新