我在Scala中使用Play框架,我希望将Seq[String]
拆分为子序列。
我从包含颜色和季节的SQL查询返回Seq[String]
,它看起来像这样:
弹簧;夏季;秋季;冬天,红色;绿色;蓝光
季节和颜色用逗号分隔,我希望将该序列拆分为2个子序列,一个是季节,另一个是颜色。
我试过了:
val subsequence=sequecne.split(",")
但它不起作用并返回该错误:值拆分不是Seq[String]
的成员
那我该怎么办?
答案 0 :(得分:0)
假设您的sequence
类似于包含一个字符串的序列:
val sequence = Seq("spring; summer; autumn; winter, red; green; blu")
val split = sequence.flatMap(_.split(","))
// => split: Seq[String] = List(spring; summer; autumn; winter, " red; green; blu")
答案 1 :(得分:0)
尝试分组,
val xs = Seq("spring; summer; autumn; winter, red; green; blu")
val groups = xs.head.split(",|;").map(_.trim).grouped(4)
这提供了一个最多包含4个项目的迭代器。最后一个数组只包含3种颜色。
要查看迭代器中的内容,
groups.toArray
Array(Array(spring, summer, autumn, winter),
Array(red, green, blu))
答案 2 :(得分:0)
这应该根据序列中的单个元素为您提供您想要的内容,并为您提供一种方法来处理您在SQL查询的字符串结果中没有预期数据的情况。如果需要,您可能需要进行一些字符串修剪。
val xs = Seq("spring; summer; autumn; winter, red; green; blu")
val ys = xs.head.split(",") match {
case Array(seasons, colours) => Array(seasons.split(";"), colours.split(";"))
case _ => ??? // unexpected case - handle appropriately
}
println(ys.toList.map(_.toList))
// List(List(spring, summer, autumn, winter), List( red, green, blu))
答案 3 :(得分:0)
除了lloydmeta:
sequence.flatMap(_.split(",")).map(_.split(";"))