我在输入中有以下列表:
val list=List("aimee,Paris,10",
"alex,Nice,12",
"Sara,Paris,15")
我希望多行字符串作为输出,格式如下:
val output:String="aimee Paris,
alex Nice,
Sara Paris")
我写了以下代码
def listToMultLine (input:List[String]):String ={
input.map(_.split(",")).map(x => List(x(0),x(1)).mkString(","))
}
但这给了我错误的输出 非常感谢你的帮助
答案 0 :(得分:2)
.mkString
是您的解决方案,可以将集合中的所有元素连接到String。
但是查看输出结果表明您要删除最后一位数字并希望每个元素都在字符串的下一行。
所以下面应该可以得到你想要的输出
scala> list.map(x => x.substring(0, x.lastIndexOf(","))).mkString(", \n")
res0: String =
aimee,Paris,
alex,Nice,
Sara,Paris
答案 1 :(得分:0)
您可以使用非常强大的foldLeft()
,请查看此blog了解更多信息
scala> list.map{
| word => word.split(",").take(2)
| }.foldLeft("")((complete, current)=>complete + current(0)+ ","+ current(1)+",\n")
您将获得所需的输出。
答案 2 :(得分:0)
似乎你想省略最后一位数字,所以我建议使用这个解决方案,由于模式匹配,它比Ramesh的类似解决方案更具可读性:
list.map(s => {
val Seq(name,city,age) = s.split(',')
(name,city)
}).mkString(", \n")
或者
list.map(s => s.split(','))
.map{case Seq(name,city,age) => (name,city)}
.mkString(", \n")
res0: String = (aimee,Paris),
(alex,Nice),
(Sara,Paris)
答案 3 :(得分:0)
尝试一下:
list.map(_.split(",")).map{case Array(a,b,c)=>a+" "+b}.mkString(",\n")
scala> val list=List("aimee,Paris,10", "alex,Nice,12", "Sara,Paris,15")
list: List[String] = List(aimee,Paris,10, alex,Nice,12, Sara,Paris,15)
scala> list.map(_.split(",")).map{case Array(a,b,c)=>a+" "+b}.mkString(",\n")
res62: String =
aimee Paris,
alex Nice,
Sara Paris
scala>