我有一个字符串数组,每个字符串至少有一个空格。对于数组中的每个元素,我想tkae字符串的最后一部分并将其放在开头。例如,如果我在我的数组中有这个
["RUBY RAILS"]
我希望结果是
["RAILS RUBY"]
我试过这个
data.map! {|str| "#{str.split(/\s+/).last} #{str.split(/\s+/).first}" }
但唯一的问题是,如果字符串有两个以上的单词,则上述不起作用。如果一个字符串有两个以上的单词,比如
["ONE TWO THREE"]
我希望重新开始
["THREE ONE TWO"]
但我的上述功能并没有这样做。如何更改我的功能以便它可以执行此操作?
答案 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"]