我在输入和中有以下列表:
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(","))
}
但是这给了我错误的输出,非常感谢你的帮助
发布于 2018-06-08 19:32:18
您可以使用功能非常强大的foldLeft()
,请查看此blog了解更多信息
scala> list.map{
| word => word.split(",").take(2)
| }.foldLeft("")((complete, current)=>complete + current(0)+ ","+ current(1)+",\n")
您将获得所需的输出。
发布于 2018-06-08 19:00:46
.mkString
是为您提供的解决方案,它可以将集合中的所有元素连接成一个字符串。
但是,从输出中可以看出,您想要删除最后一个数字,并希望每个元素都位于字符串的下一行。
因此,下面的内容应该会得到您想要的输出
scala> list.map(x => x.substring(0, x.lastIndexOf(","))).mkString(", \n")
res0: String =
aimee,Paris,
alex,Nice,
Sara,Paris
发布于 2018-06-09 04:14:43
似乎您想省略最后一个数字,所以我建议使用这个解决方案,由于模式匹配,它比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)
https://stackoverflow.com/questions/50758952
复制相似问题