如何使用Ruby反转单词而不是字符?

时间:2013-11-09 19:33:25

标签: ruby

我想颠倒文本文件的字样:

如果我输入的是:

Hello World

我的输出应该是:

World Hello

我试过了:

File.open('teste.txt').each_line do |line|
  print line.reverse.gsub(/\n/,"")
end

但我把角色颠倒了。

3 个答案:

答案 0 :(得分:8)

"Hello World".split.reverse.join(" ")
=> "World Hello"

它将字符串拆分为一个数组,其中空格是默认分隔符。然后它反转数组并使用空格连接数组中的字符串。

您的解决方案应如下所示:

File.open("test.txt").each_line do |line|
  puts line.split.reverse.join(" ")
end

puts在输出后附加换行符,而print则没有。这是必要的,因为当split将其拆分为单词数组时,{{1}}会丢弃每行上的原始换行符。

答案 1 :(得分:2)

将字符串分解为单词并将其反转。

"Hello World".split.reverse.join(' ') # => "World Hello"

答案 2 :(得分:0)

将字符串拆分为空格,将其反转,然后将它们连接在一起。

你可以这样做一个方法:

def reverse_words(string)
      return string.split(" ").reverse.join(" ")
end

然后,用以下方法调用该方法:

print reverse_words("Hello World")

或者将字符串设置为返回值:

reversed_string = reverseWords("Hello World")