Dans Ruby, j'ai fait:
"string1::string2".split("::")
Dans Scala, je ne trouve pas comment split
en utilisant une chaîne, pas un seul caractère.
Dans votre exemple, cela ne fait aucune différence, mais la méthode String#split
Dans Scala prend en fait un String
qui représente une expression régulière. Assurez-vous donc de vous échapper certains caractères selon les besoins, comme par exemple dans "a..b.c".split("""\.\.""")
ou pour rendre ce fait plus évident, vous pouvez appeler la méthode de fractionnement sur un RegEx
: """\.\.""".r.split("a..b.c")
.
Le REPL est encore plus facile que Stack Overflow. Je viens de coller votre exemple tel quel.
Welcome to Scala version 2.8.1.final (Java HotSpot Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.
scala> "string1::string2".split("::")
res0: Array[Java.lang.String] = Array(string1, string2)
Cette ligne de Ruby devrait fonctionner comme dans Scala aussi et retourner un Array[String]
.
Si vous regardez implémentation Java vous voyez que le paramètre de String#split
Sera en fait compilé en une expression régulière.
Il n'y a pas de problème avec "string1::string2".split("::")
car ":" est juste un caractère dans une expression régulière, mais par exemple "string1|string2".split("|")
ne donnera pas le résultat attendu. "|" est le symbole spécial de l'alternance dans une expression régulière.
scala> "string1|string2".split("|")
res0: Array[String] = Array(s, t, r, i, n, g, 1, |, s, t, r, i, n, g, 2)