根据元素的索引连接数组元素

时间:2013-12-02 21:26:55

标签: ruby arrays

我有这个数组:[ 'here', 'are', 'some', '123', 'data' ]。我想将'123'之前的元素加入到字符串中,将'123'之后的元素加入到另一个字符串中以获取这三个字符串:

  • 'here are some'
  • '123'
  • 'data'

我通过'123'获得了arr.index {|el| el =~ /\d{3}/ }的索引。我尝试了join方法,但我找不到添加某些条件的方法。我使用array.each { ... }开发了一个解决方案来手动连接元素。最好的方法是什么?

3 个答案:

答案 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个字符串。这是你在找什么?