读取平面文件中组行的最佳方法

Best way to read lines in groups in a flat file

我有一个由行组组成的文件。每个组代表一个事件。组的末尾用 "END" 表示。我可以想到使用 for 循环遍历行,存储中间行并在遇到 "END" 时发出组。

但是因为我想用 Scala 来做。我想知道是否有人可以建议一种更实用的方法来完成同样的事情?

----------
A
B
C
END
----------
D
E
F
END
----------

只需为return组定义一个迭代器

 def groupIterator(xs:Iterator[String]) =
   new Iterator[List[String]]
    { def hasNext = xs.hasNext; def next = xs.takeWhile(_ != "END").toList}

正在测试(使用 Iterator[String],但 Source.getLines 将 return 成为文件行的迭代器)

val str = """
A 
B
C
END
D
E
F
END
""".trim 

for (g <- groupIterator(str.split('\n').toIterator)) println(g)
                                              //> List(A, B, C)
                                              //| List(D, E, F)