想要读取一个字符串,如果它有多个值,然后在输出中显示由||分隔的单个标头值



我在scala中的输入字符串如下所示

val input = "US:value1,US:value2,France:value3"

我想要一个输出字符串,

例如
val output = "US:value1||value2,France:value3"

由于 US 在输出中的输入中有 2 个值,它应该显示为 US:value1||value2 并且由于法国只有一个值,因此输出应该看起来像 France:value3请帮助我在 Scala 中对此进行编码

你可以这样做:

input.split(",").map{value => (value.split(":")(0), value.split(":")(1))}.groupBy(_._1).map{ case(k,v) => k + ":" + v.map(_._2).mkString("||")}.mkString(",")

或者您也可以这样做:

val array = input.split(",").map{x => val arr = x.split(":")(arr(0),arr(1))}
array: Array[(String, String)] = Array((US,value1), (US,value2), (France,value3))
array.reduce((x, y) => if(x._1 == y._1) {(x._1, x._2 + "||" + y._2)} else {(x._1 + ":" + x._2, y._1 + ":" + y._2)})
// res26: (String, String) = (US:value1||value2,France:value3)

相关内容

最新更新