保留单词顺序的单词中的反转字符

时间:2013-02-11 10:22:14

标签: ruby

我试图在一串多个单词中反转每个单词的单词。例如:

  

"你怎么了?#34; => " ih stahw pu"

这就像我得到的那样接近:

def backwards(s)
  s.split.each do |y| y.reverse! end
end

事情是这会返回一个数组,而不是一个字符串。我尝试在join(' ')之后添加reverse!,但这给了我一个错误。

5 个答案:

答案 0 :(得分:6)

不知道为什么人们坚持使用split

s.gsub(/\w+/, &:reverse)

答案 1 :(得分:5)

str.split(' ').map{|w| w.reverse}.join ' '

清洁版:

str.split.map(&:reverse).join ' '

答案 2 :(得分:2)

你应该这样做:

def backwards(str)
  str.split.map(&:reverse).join(' ')
end

答案 3 :(得分:1)

你几乎做对了......你必须在块的结果上调用join(' ')

def backwards(s)
  s.split.map { |word| word.reverse }.join(' ')
end

答案 4 :(得分:0)

您想加入each的结果,而不是reverse!的结果。你需要:

s.split.each {|y| y.reverse!}.join ' '