如何将 lines/Strings 的列表制作成子列表
How to make a List of lines/Strings into sublists
抱歉,如果之前有人问过这个问题,但我一直在寻找解决方案。
我有一个字符串列表;
val a = List("size 34", "help","panne","size 35","kake", "test","size 34", "help", "panne","size 35", "kake", "test")
我想把它们做成一个多重列表。
像;
val b = List("size 34", "help","panne")
val c = List("size 35","kake", "test")
例如,当它看到某个单词的开头时,我想将原始列表拆分为一个新列表;当字符串以 size 开头时,它将拆分为一个新列表。
我已经弄清楚如何用;
获取特定的字符串
val sequenceWithPlainAndGlazedDonut = a.filter { a => a.contains("size")}
我想要从单词大小(即使它更多的是字符串,即数字)到下一次显示单词大小的新列表。
最好的方法是什么?
您可以使用 foldLeft
或其符号版本 /:
val newList = (List.empty[List[String]] /: a) {(agg, elem) =>
if (elem startsWith "size ") List(elem) :: agg
else agg match {
case head :: tail => (elem :: head) :: tail
case Nil => agg
}
}
这将以相反的顺序为您提供内部和外部列表,如果您需要原始顺序,您可以这样做:
newList.map(_.reverse).reverse
如果列表中有更多的值,可以使用数组来捕获它们。
看看下面的方法是否适合你。
scala> val a = List("size 34", "help","panne","size 35","kake", "test","size 34", "help", "panne","size 35", "kake", "test")
a: List[String] = List(size 34, help, panne, size 35, kake, test, size 34, help, panne, size 35, kake, test)
scala> val b = a.sliding(3,3).toList
b: List[List[String]] = List(List(size 34, help, panne), List(size 35, kake, test), List(size 34, help, panne), List(size 35, kake, test))
scala> b(0)
res1: List[String] = List(size 34, help, panne)
scala> b.length
res6: Int = 4
scala>
抱歉,如果之前有人问过这个问题,但我一直在寻找解决方案。
我有一个字符串列表;
val a = List("size 34", "help","panne","size 35","kake", "test","size 34", "help", "panne","size 35", "kake", "test")
我想把它们做成一个多重列表。 像;
val b = List("size 34", "help","panne")
val c = List("size 35","kake", "test")
例如,当它看到某个单词的开头时,我想将原始列表拆分为一个新列表;当字符串以 size 开头时,它将拆分为一个新列表。
我已经弄清楚如何用;
获取特定的字符串val sequenceWithPlainAndGlazedDonut = a.filter { a => a.contains("size")}
我想要从单词大小(即使它更多的是字符串,即数字)到下一次显示单词大小的新列表。
最好的方法是什么?
您可以使用 foldLeft
或其符号版本 /:
val newList = (List.empty[List[String]] /: a) {(agg, elem) =>
if (elem startsWith "size ") List(elem) :: agg
else agg match {
case head :: tail => (elem :: head) :: tail
case Nil => agg
}
}
这将以相反的顺序为您提供内部和外部列表,如果您需要原始顺序,您可以这样做:
newList.map(_.reverse).reverse
如果列表中有更多的值,可以使用数组来捕获它们。 看看下面的方法是否适合你。
scala> val a = List("size 34", "help","panne","size 35","kake", "test","size 34", "help", "panne","size 35", "kake", "test")
a: List[String] = List(size 34, help, panne, size 35, kake, test, size 34, help, panne, size 35, kake, test)
scala> val b = a.sliding(3,3).toList
b: List[List[String]] = List(List(size 34, help, panne), List(size 35, kake, test), List(size 34, help, panne), List(size 35, kake, test))
scala> b(0)
res1: List[String] = List(size 34, help, panne)
scala> b.length
res6: Int = 4
scala>