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

Scala 在平面文件中成组读取行的最佳方法,scala,stream,string-parsing,Scala,Stream,String Parsing,我有一个由几行组成的文件。每组代表一个事件。组的末尾用“end”表示。我可以考虑使用for循环来循环行,存储中间行,并在遇到“END”时发出组 但是因为我想在Scala做这件事。我想知道是否有人能建议一种更实用的方法来完成同样的事情 ---------- A B C END ---------- D E F END ---------- 只需定义一个迭代器来返回组 def groupIterator(xs:Iterator[String]) = new Iterator[List[St

我有一个由几行组成的文件。每组代表一个事件。组的末尾用“end”表示。我可以考虑使用for循环来循环行,存储中间行,并在遇到“END”时发出组

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

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

只需定义一个迭代器来返回组

 def groupIterator(xs:Iterator[String]) =
   new Iterator[List[String]]
    { def hasNext = xs.hasNext; def next = xs.takeWhile(_ != "END").toList}
测试(使用
迭代器[String]
,但是
Source.getLines
将返回文件行的迭代器)

val str=”“”
A.
B
C
结束
D
E
F
结束
“修剪”
对于(g)列表(A、B、C)
//|名单(D、E、F)

谢谢这比我预想的要短得多,也容易得多
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)