[英]convert a list of String to a string
我在輸入中有以下列表:
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(","))
}
但這給了我錯誤的輸出,非常感謝您的幫助
.mkString
是適合您的解決方案,可以將集合中的所有元素.mkString
為String。
但是查看您的輸出表明您想要刪除最后一位數字,並希望字符串的下一行中的每個元素。
因此,以下應該可以為您提供所需的輸出
scala> list.map(x => x.substring(0, x.lastIndexOf(","))).mkString(", \n")
res0: String =
aimee,Paris,
alex,Nice,
Sara,Paris
您可以使用功能強大的foldLeft()
,查看此博客以了解更多信息
scala> list.map{
| word => word.split(",").take(2)
| }.foldLeft("")((complete, current)=>complete + current(0)+ ","+ current(1)+",\n")
您將獲得所需的輸出。
似乎您想省略最后一位數字,因此我建議您使用此解決方案,由於模式匹配,該解決方案比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)
嘗試這個:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.