我有一个像这样的数组
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"]
我遗失了一些明显不是我的东西?
答案 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"]