拆分数组

时间:2015-07-09 13:04:33

标签: arrays ruby

我有一个像这样的数组

array = ["My Name", "1905", "more than three words"]

我想要做的是按空格分割数组的每个项目,然后用每个单词创建1个数组,所以

["My", "Name", "1905", "more", "than", "three", "words"]

到目前为止我尝试过的是

words = []
array.each do { |a| words << a.to_s.split(" ") }

返回

[["My", "Name"], ["1905"], ["more", "than", "three", "words"]]

但我在一个数组中有多个数组。我将如何实现

["My", "Name", "1905", "more", "than", "three", "words"]

我遗失了一些明显不是我的东西?

4 个答案:

答案 0 :(得分:4)

您需要将其展平,或在制图时展平。

array.flat_map{|e| e.split(" ")}

你也可以这样做:

array.inject([]){|a, s| a + s.split(" ")}

答案 1 :(得分:3)

试试这个:

array.join(' ').split(' ')

示例:

["My Name", "1905", "more than three words"].join(' ').split(' ') # => ["My", "Name", "1905", "more", "than", "three", "words"]

答案 2 :(得分:3)

这应该可以为您提供所需的输出。

array.join(" ").split

替代使用scan

array.join(" ").scan(/\S+/)

答案 3 :(得分:0)

array.collect { |a| a.split(" ") }.flatten 
#=> ["My", "Name", "1905", "more", "than", "three", "words"]