Как разбить строку на строку в Scala - PullRequest
23 голосов
/ 02 апреля 2011

В Ruby я сделал:

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

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

Ответы [ 4 ]

78 голосов
/ 02 апреля 2011

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)
30 голосов
/ 02 апреля 2011

В вашем примере это не имеет значения, но метод String#split в Scala на самом деле принимает String, который представляет регулярное выражение.Поэтому обязательно экранируйте определенные символы по мере необходимости, например, в "a..b.c".split("""\.\."""), или чтобы сделать этот факт более очевидным, вы можете вызвать метод split для RegEx: """\.\.""".r.split("a..b.c").

12 голосов
/ 02 апреля 2011

Эта строка Ruby должна работать так же, как и в Scala, и возвращать Array[String].

3 голосов
/ 21 декабря 2015

Если вы посмотрите на реализацию Java , вы увидите, что параметр String#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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...