Как разбить строку на строку в Scala
В Ruby я сделал:
"string1::string2".split("::")
В Scala я не могу найти, как split
использовать строку, а не один символ.
Ответы
Ответ 1
В вашем примере это не имеет значения, но метод String#split
в Scala фактически принимает String
, который представляет собой регулярное выражение. Поэтому обязательно избегайте определенных символов по мере необходимости, например, например. в "a..b.c".split("""\.\.""")
или для того, чтобы сделать этот факт более очевидным, вы можете вызвать метод split на RegEx
: """\.\.""".r.split("a..b.c")
.
Ответ 2
REPL даже проще, чем переполнение стека. Я просто вставил ваш пример, как есть.
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)
Ответ 3
Эта строка Ruby должна работать так же, как и в Scala, и возвращает Array[String]
.
Ответ 4
Если вы посмотрите на реализацию Java, вы увидите, что параметр String#split
будет фактически скомпилирован в регулярное выражение.
Нет проблем с "string1::string2".split("::")
, потому что ":" является просто символом в регулярном выражении, но, например, "string1|string2".split("|")
не даст ожидаемого результата. "|" является специальным символом для чередования в регулярном выражении.
scala> "string1|string2".split("|")
res0: Array[String] = Array(s, t, r, i, n, g, 1, |, s, t, r, i, n, g, 2)