Подтвердить что ты не робот

Как разбить строку на строку в Scala

В Ruby я сделал:

"string1::string2".split("::")

В Scala я не могу найти, как split использовать строку, а не один символ.

4b9b3361

Ответ 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)