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



我有一个由行组组成的文件。每一组代表一个事件。组的结束用"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}

测试(使用Iterator[String],但Source.getLines将为您的文件行返回一个迭代器)

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)

相关内容

  • 没有找到相关文章