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 ",").


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.