在一个文本文件,我在表单数据的每个元素分裂出一个列表在满足谓词(斯卡拉)
val input = io.Source.fromFile("filename.txt").getLines().toList
我要下破列表分为子列表开始1)
,2)
等
我想出:
val subLists =
input.foldRight(List(List[String]())) {
(x, acc) =>
if (x.matches("""[0-9]+\)""")) List() :: (x :: acc.head) :: acc.tail
else (x :: acc.head) :: acc.tail
}.tail
这可以实现更简单吗?如果有一种内置方法可以在满足谓词的每个元素(提示,提示,库设计器:)上拆分集合,那么真的很好。
看看这个问题,并接受的答案得到的结果根本。 com/questions/6800737/how-to-group-a-variable-length-repeating-sequence-in-scala – mpilquist
在这个答案中可能使用迭代器,但这种情况更复杂,因为每个标题都不同, d需要第二个Iterator/List作为标题,并且它不再优雅。递归似乎更清洁。 –