在一個文本文件,我在表單數據的每個元素分裂出一個列表在滿足謂詞(斯卡拉)
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作爲標題,並且它不再優雅。遞歸似乎更清潔。 –