Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何切换字符串中单词的位置?_Arrays_Ruby_String_Split_Ruby 2.4 - Fatal编程技术网

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"]