【发布时间】:2015-11-30 12:08:41
【问题描述】:
我想在Array#find_index { |item| block } 首次匹配后查找更多匹配项。如何搜索第二个匹配、第三个匹配等的索引?
换句话说,对于Array#find_index,我希望Regexp#match(str, pos) 的pos 参数等效。然后我可以维护一个当前位置索引来继续搜索。
我不能使用Enumerable#find_all,因为我可能会在调用之间修改数组(在这种情况下,我还将调整我的当前位置索引以反映修改)。我不想复制数组的一部分,因为这会增加我算法的computational complexity。我想在不复制数组的情况下这样做:
new_pos = pos + array[pos..-1].find_index do |elem|
elem.matches_condition?
end
以下是不同的问题。他们只询问数组中的第一个匹配项,加上一个:
- https://stackoverflow.com/questions/11300886/ruby-how-to-find-the-next-match-in-an-array
- https://stackoverflow.com/questions/4596517/ruby-find-next-in-array
下面的问题更接近,但仍然对我没有帮助,因为我需要在继续下一个之前处理第一个匹配(并且这种方式也与修改冲突):
【问题讨论】: