首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字符串列表转换为字符串

将字符串列表转换为字符串
EN

Stack Overflow用户
提问于 2018-06-08 18:47:05
回答 3查看 575关注 0票数 1

我在输入和中有以下列表:

代码语言:javascript
复制
val list=List("aimee,Paris,10",
"alex,Nice,12",
"Sara,Paris,15")

我希望有一个多行字符串作为输出,格式如下:

代码语言:javascript
复制
val output:String="aimee Paris,
alex Nice,
Sara Paris")

我写了下面的代码

代码语言:javascript
复制
def listToMultLine (input:List[String]):String ={
input.map(_.split(",")).map(x => List(x(0),x(1)).mkString(","))
}

但是这给了我错误的输出,非常感谢你的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-08 19:32:18

您可以使用功能非常强大的foldLeft(),请查看此blog了解更多信息

代码语言:javascript
复制
 scala> list.map{
     | word => word.split(",").take(2)
     | }.foldLeft("")((complete, current)=>complete + current(0)+ ","+ current(1)+",\n")

您将获得所需的输出。

票数 0
EN

Stack Overflow用户

发布于 2018-06-08 19:00:46

.mkString是为您提供的解决方案,它可以将集合中的所有元素连接成一个字符串。

但是,从输出中可以看出,您想要删除最后一个数字,并希望每个元素都位于字符串的下一行。

因此,下面的内容应该会得到您想要的输出

代码语言:javascript
复制
scala> list.map(x => x.substring(0, x.lastIndexOf(","))).mkString(", \n")
res0: String =
aimee,Paris,
alex,Nice,
Sara,Paris
票数 2
EN

Stack Overflow用户

发布于 2018-06-09 04:14:43

似乎您想省略最后一个数字,所以我建议使用这个解决方案,由于模式匹配,它比Ramesh的类似解决方案更具可读性:

代码语言:javascript
复制
list.map(s => {
  val Seq(name,city,age) = s.split(',')
  (name,city)
}).mkString(", \n")

或者另选地

代码语言:javascript
复制
list.map(s => s.split(','))
  .map{case Seq(name,city,age) => (name,city)}
  .mkString(", \n")

res0: String = (aimee,Paris), 
(alex,Nice), 
(Sara,Paris)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50758952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档