Arrays 如何切换字符串中单词的位置?
我有一个字符串数组,每个字符串中至少有一个空格。对于数组中的每个元素,我想把字符串的最后一部分放在开头。例如,如果我的数组中有这个Arrays 如何切换字符串中单词的位置?,arrays,ruby,string,split,ruby-2.4,Arrays,Ruby,String,Split,Ruby 2.4,我有一个字符串数组,每个字符串中至少有一个空格。对于数组中的每个元素,我想把字符串的最后一部分放在开头。例如,如果我的数组中有这个 ["RUBY RAILS"] 我希望结果是 ["RAILS RUBY"] 我试过这个 data.map! {|str| "#{str.split(/\s+/).last} #{str.split(/\s+/).first}" } 但唯一的问题是,如果字符串包含两个以上的单词,则上面的操作无效。如果字符串包含两个以上的单词,如 ["ONE TWO THREE"]
["RUBY RAILS"]
我希望结果是
["RAILS RUBY"]
我试过这个
data.map! {|str| "#{str.split(/\s+/).last} #{str.split(/\s+/).first}" }
但唯一的问题是,如果字符串包含两个以上的单词,则上面的操作无效。如果字符串包含两个以上的单词,如
["ONE TWO THREE"]
我想让它成为
["THREE ONE TWO"]
但我上面的函数并不能做到这一点。如何更改我的函数以使其能够执行此操作?您正在寻找:
您正在寻找:
非常感谢。我注意到您不必使用正则表达式将字符串拆分为单词。自动拆分是仅在常规空间中发生,还是在其他类型的空间(如非中断空间)中也会发生?Natalia请查看以确定要使用什么。如果你知道你会得到更复杂的东西,而不是一个空格字符串,正则表达式是可以的。在我的示例中,您可以更改为
.map{| string | string.split(/\s+/)}
谢谢。我还注意到这个子句“|ar | join(“”)”应该是“|ar | ar.join(“”)”谢谢。我注意到您不必使用正则表达式将字符串拆分为单词。自动拆分是仅在常规空间中发生,还是在其他类型的空间(如非中断空间)中也会发生?Natalia请查看以确定要使用什么。如果你知道你会得到更复杂的东西,而不是一个空格字符串,正则表达式是可以的。在我的示例中,您可以更改为.map{| string | string.split(/\s+/)}
谢谢。我还注意到这个子句“|ar | join(“”)”应该是“|ar | ar.join(“”)”
["ONE TWO THREE"]
.map(&:split) #=> [["ONE", "TWO", "THREE"]]
.map { |ar| ar.rotate(-1) } #=> [["THREE", "ONE", "TWO"]]
.map { |ar| ar.join(' ') } #=> ["THREE ONE TWO"]