我在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)