En Ruby, que hice:¿Cómo dividir una cadena por una cadena en Scala
"string1::string2".split("::")
En Scala, no puedo encontrar la manera de split
mediante una cadena, no un solo carácter.
En Ruby, que hice:¿Cómo dividir una cadena por una cadena en Scala
"string1::string2".split("::")
En Scala, no puedo encontrar la manera de split
mediante una cadena, no un solo carácter.
En su ejemplo, no hace la diferencia, pero el método String#split
en Scala realmente toma un String
que representa una expresión regular. Así que asegúrese de escapar de ciertos personajes según sea necesario, como p. en "a..b.c".split("""\.\.""")
o para hacer ese hecho más obvio, puede llamar al método de división en un RegEx
: """\.\.""".r.split("a..b.c")
.
Esa línea de Ruby debería funcionar igual que en Scala y devolver un Array[String]
.
El REPL es incluso más fácil que Stack Overflow. Acabo de pegar tu ejemplo como está.
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)
esta debería ser la respuesta. La estrategia de Moritz de crear un regex funciona, pero esta solución simple es mejor. – iwein
tan scala> ruby –
esta respuesta en realidad responde a la pregunta; la respuesta actualmente aceptada describe una teoría que podría funcionar, pero no describe la respuesta real a la pregunta formulada. –
Si nos fijamos en la Java implementation se ve que el parámetro a String#split
será, de hecho, compilado a una expresión regular.
No hay problema con "string1::string2".split("::")
porque ":" es solo un caracter en una expresión regular, pero por ejemplo "string1|string2".split("|")
no dará el resultado esperado. "|" es el símbolo especial de alternancia en una expresión regular.
scala> "string1|string2".split("|")
res0: Array[String] = Array(s, t, r, i, n, g, 1, |, s, t, r, i, n, g, 2)
Ah sí. Estaba convencido de que tomó una Regex o una Char, no una String, por lo que siguió quejándose. –
Sugiero usar '\ Q' y' \ E' en lugar de hacer escapes individuales. Simplemente agregue '\ Q' al principio (o' \\ Q', según sea necesario), y un '\ E' al final. –
@ DanielC.Sobral Gran idea: ¿alguna forma de escapar de una cadena almacenada en una 'var' (constante)? –