如何切换字符串中单词的位置?

时间:2017-02-12 20:35:49

标签: arrays ruby string split ruby-2.4

我有一个字符串数组,每个字符串至少有一个空格。对于数组中的每个元素,我想tkae字符串的最后一部分并将其放在开头。例如,如果我在我的数组中有这个

["RUBY RAILS"]

我希望结果是

["RAILS RUBY"]

我试过这个

data.map! {|str| "#{str.split(/\s+/).last} #{str.split(/\s+/).first}" }

但唯一的问题是,如果字符串有两个以上的单词,则上述不起作用。如果一个字符串有两个以上的单词,比如

["ONE TWO THREE"]

我希望重新开始

["THREE ONE TWO"]

但我的上述功能并没有这样做。如何更改我的功能以便它可以执行此操作?

1 个答案:

答案 0 :(得分:2)

您正在寻找Array#rotate

["ONE TWO THREE"]
  .map(&:split)               #=> [["ONE", "TWO", "THREE"]]
  .map { |ar| ar.rotate(-1) } #=> [["THREE", "ONE", "TWO"]]
  .map { |ar| ar.join(' ') }     #=> ["THREE ONE TWO"]