0

文字列内のすべての単語を逆にしたい

  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

ただし、単語間に複数の空白が含まれる可能性のある文字列では機能しません。

4

3 に答える 3

5
s = "How     Are  You"
s.gsub(/\w+/) { |match| match.reverse }
于 2012-07-21T07:03:16.540 に答える
2

これは可能な限り最短で、おそらく最速でもあります。文字列は正規表現され、連続するすべての単語の文字は順番が逆になります

s = "How     Are  You"
s.gsub(/\w+/,&:reverse) 

=>woH     erA  uoY
于 2012-07-21T10:42:39.780 に答える
0

これは機能します。任意の単語境界文字で分割するための正規表現の使用

def reverse_string str
  arr = str.split /\b/
  new_arr = arr.collect {|a| a.reverse}
  new_arr.join
end
于 2012-07-21T07:00:43.463 に答える