如何仅选择匹配的第一个元素?

时间:2017-06-01 14:31:14

标签: arrays ruby select match

我使用的是Ruby 2.4。我想在数组中选择第一个连续匹配的elemet,但是当我遇到一个不匹配的元素时,我想停止选择。所以,如果我想找到一堆" a"' s,我可以写这个

2.4.0 :008 > arr = ["aaaa", "aaaaaaaa", "12345", "aaa"]
 => ["aaaa", "aaaaaaaa", "12345", "aaa"]
...
2.4.0 :010 > arr.select{|string| string.count('a') >= 3 }
 => ["aaaa", "aaaaaaaa", "aaa"]

但根据我的规定,我不想选择最后一个" aaa" element因为之前有一个不匹配的元素。如何修改我所拥有的内容以便我只选择第一个匹配的元素?请注意,如果我的数组是

["1111", "aaaaaa"]

我希望没有任何回复,因为数组中的第一个元素与我的条件不匹配。

1 个答案:

答案 0 :(得分:4)

#take_while做你想做的事:https://ruby-doc.org/core-2.4.1/Enumerable.html#method-i-take_while

arr.take_while { |s| s.count('a') >= 3 }
=> ["aaaa", "aaaaaaaa"]
相关问题