我有这个数组:[ 'here', 'are', 'some', '123', 'data' ]
。我想将'123'
之前的元素加入到字符串中,将'123'
之后的元素加入到另一个字符串中以获取这三个字符串:
'here are some'
'123'
'data'
我通过'123'
获得了arr.index {|el| el =~ /\d{3}/ }
的索引。我尝试了join
方法,但我找不到添加某些条件的方法。我使用array.each { ... }
开发了一个解决方案来手动连接元素。最好的方法是什么?
答案 0 :(得分:2)
arr = [ 'here', 'are', 'some', '123', 'data' ]
i = arr.index {|el| el =~ /\d{3}/ }
arr[0..i-1].join(' ') # => here are some
arr[i] # => 123
arr[i+1..-1].join(' ') # => data
答案 1 :(得分:2)
arr.chunk{|e| (e =~ /\d{3}/) || false}.map{|a| a.last.join(" ")}
# => ["here are some", "123", "data"]
答案 2 :(得分:1)
b = a.index {|el| el =~ /\d{3}/}
s = [a[0..b-1].join(" "),a[b],a[b+1..a.size-1].join(" ")]
所以s[0]
,s[1]
,s[2]
将是3个字符串。这是你在找什么?