簡體   English   中英

將String列表轉換為字符串

[英]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 REPL中:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM