Scala: rejoignez un itérable de chaînes


262

Comment "joindre" un itérable de chaînes par une autre chaîne dans Scala?

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

Je veux que ce code sorte a,b,c(joindre les éléments par ",").


1
@scala_newbie Je pense que votre question a été rejetée, car certaines personnes pensent qu'elle manque d'effort de recherche.
om-nom-nom du

24
googler cette question est mon effort de recherche
Walrus the Cat

Réponses:


424

Que diriez-vous de mkString ?

theStrings.mkString(",")

Il existe une variante dans laquelle vous pouvez également spécifier un préfixe et un suffixe.

Voir ici pour une implémentation utilisant foldLeft , qui est beaucoup plus verbeux, mais qui mérite peut-être d'être étudié pour le bien de l'éducation.


Notez que l'implémentation de foldLeft suppose une liste non vide
Frawr

5
Merci! Dans le cas où quelqu'un souhaite mettre des éléments de chaîne entre guillemets, mkString est également utile: theStrings.mkString ("'", "', '", "'")
Niko Gamulin

1
@Frawr Cette page est liée à un tas d'exemples oldfashionedsoftware.com/2009/07/30/… qui inclut une implémentation qui utilise la correspondance de modèle pour le cas de liste vide (Nil). Le modifier pour imiter mkString serait comme ceci: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos

2
Le lien langref.org est mort
Floegipoky
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.