Scala: Verbinden Sie eine Reihe von Zeichenfolgen

262

Wie "verbinde" ich eine Iterable von Zeichenfolgen mit einer anderen Zeichenfolge in Scala?

val thestrings = Array("a","b","c")
val joined = ???
println(joined)

Ich möchte, dass dieser Code ausgegeben wird a,b,c(verbinden Sie die Elemente mit ",").

scala_newbie
quelle
1
@scala_newbie Ich denke, Ihre Frage wurde abgelehnt, weil einige Leute denken, dass es an Forschungsaufwand mangelt.
Om-Nom-Nom
24
Diese Frage zu googeln ist meine Forschungsanstrengung
Walross die Katze

Antworten:

424

Wie wäre es mit mkString ?

theStrings.mkString(",")

Es gibt eine Variante, in der Sie auch ein Präfix und ein Suffix angeben können.

Sehen Sie hier für eine Implementierung mit foldLeft , dem ausführlichen viel mehr ist, aber vielleicht lohnt einen Blick auf für Bildung willen.

Brian Agnew
quelle
Beachten Sie, dass die foldLeft-Implementierung eine nicht leere Liste
voraussetzt
5
Vielen Dank! Für den Fall, dass jemand Zeichenfolgenelemente in Anführungszeichen setzen möchte, ist mkString ebenfalls hilfreich: theStrings.mkString ("'", "', '", "'")
Niko Gamulin
1
@Frawr Diese Seite enthält Links zu einer Reihe von Beispielen oldfashionedsoftware.com/2009/07/30/…, die eine Implementierung enthalten, die den Mustervergleich für den Fall der leeren Liste (Null) verwendet. Das Ändern, um mkString nachzuahmen, wäre wie folgt: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos
2
Der langref.org Link ist tot
Floegipoky