Scala: unisciti a un iterabile di stringhe


262

Come faccio a "unire" un iterabile di stringhe con un'altra stringa in Scala?

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

Voglio che questo codice venga emesso a,b,c(unisci gli elementi con ",").


1
@scala_newbie Penso che la tua domanda sia stata sottoposta a voto negativo, perché alcune persone pensano che manchi di ricerca.
om-nom-nom,

24
cercare su Google questa domanda è il mio sforzo di ricerca
Walrus the Cat,

Risposte:


424

Che ne dici di mkString ?

theStrings.mkString(",")

Esiste una variante in cui è possibile specificare un prefisso e anche un suffisso.

Vedi qui per un'implementazione usando foldLeft , che è molto più dettagliato, ma forse vale la pena guardare per amore dell'educazione.


Si noti che l'implementazione di foldLeft presuppone un elenco non vuoto
Frawr,

5
Grazie! Nel caso in cui qualcuno voglia racchiudere gli elementi stringa tra virgolette, mkString è anche utile: theStrings.mkString ("'", "', '", "'")
Niko Gamulin,

1
@Frawr Quella pagina si collega a un mucchio di esempi oldfashionedsoftware.com/2009/07/30/… che include un'implementazione che utilizza la corrispondenza dei modelli per il caso vuoto dell'elenco (zero). Modificarlo per imitare mkString sarebbe come questo: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos l'

2
Il link langref.org è morto
Floegipoky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.