В текстовом файле у меня есть данные в виде:
1)
text
text
2)
more text
3)
even more text
more even text
even more text
...
Я прочитал его как список строк, используя следующее:
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
Может ли это быть достигнуто проще? Что было бы действительно хорошо, было бы, если бы был встроенный метод для разделения коллекции на каждый элемент, который удовлетворяет предикату (подсказка, подсказка, дизайнеры библиотеки:)).