Comment découper une chaîne de caractères en une chaîne de caractères en Scala
En Ruby, j'ai fait:
"string1::string2".split("::")
En Scala, je ne trouve pas comment split
l'aide d'une chaîne, pas un seul caractère.
Vous devez vous connecter pour publier un commentaire.
Dans votre exemple, il ne permet pas de faire une différence, mais la
String#split
méthode Scala fait uneString
qui représente une expression régulière. Assurez-vous donc d'échapper certains caractères en tant que de besoin, comme par exemple dans le"a..b.c".split("""\.\.""")
ou de faire qui fait de plus en plus évidents, vous pouvez appeler la méthode de fractionnement sur uneRegEx
:"""\.\.""".r.split("a..b.c")
.\Q
et\E
au lieu de faire de la personne de s'échapper. Juste ajouter\Q
pour le début (ou\\Q
, en tant que de besoin), et une\E
à la fin.var
(constante)?scala.util.matching.Regex.quote
, ou Java, l'équivalent de la méthode.java.util.regex.Pattern.quote(str)
ne sera que de l'arbitraire d'un littéral de Chaîne (surround avec \Q \E).Le REPL est même plus facile que de Débordement de Pile. J'ai juste collé à votre exemple.
"aaaaa".split("a")
=>List("", "", "", "", "", "")
- qui, pour la plupart des fins de ne pas fournir de renseignements utiles. Serait plutôt à interpréter comme vide.Que la ligne de Ruby devrait fonctionner comme il est en Scala et retourne un
Array[String]
.Si vous regardez la L'implémentation Java vous voyez que le paramètre
String#split
sera compilé à une expression régulière.Il n'y a pas de problème avec
"string1::string2".split("::")
parce que ":" est simplement un caractère dans une expression régulière, mais par exemple"string1|string2".split("|")
ne donnera pas le résultat escompté. "|" est le symbole spécial pour l'alternance dans une expression régulière.