有没有办法在不从循环开头开始的情况下获取循环中的下一个元素?
我知道这next
允许迭代到下一个元素,但它从循环的开头开始。我想获取下一个元素并继续循环中的下一条语句。
我正在解析一个结构如下的文本文件:
element 1
part 1
part 2
element 2
part 1
part 2
请注意,每个元素有 11 个部分,因此这只是一个示例。此外,有时在解析过程中会删除一些行,所以我认为我不能为每次循环迭代推进固定数量的元素。
我将所有文本读入一个数组,然后我想使用以下内容处理每一行:
text.each do |L|
#if L is new element create object to store data
#parse next line store as part 1
#parse next line store as part 2
end
我知道如何使用while
循环和类似 C 的编码风格来做到这一点,在这种风格中,我明确索引到数组中,并每次按我想要的量递增索引变量,但我想知道是否有 Ruby 方法来做到这一点. 类似于next
但会从循环中的同一点继续,只是从下一个元素开始,而不是从循环的开头开始。
编辑:
这是一个简化的示例,说明如何使用while
循环解决此问题:
text = ["a", "b", "c", " ", " ", "d", "e", "f"]
i = 0
while i < text.length do
if text[i] == " " then
i += 1
else
a = text[i]
b = text[i+1]
c = text[i+2]
puts a + b + c
i += 3
end
end
请注意,我正在编写的实际代码更复杂。我试图在这里提出一个最简单的例子来说明我想要做什么。