web-dev-qa-db-ja.com

Scalaの文字列で文字列を分割する方法

Rubyでは、次のことを行いました。

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

Scalaでは、単一の文字ではなく文字列を使用してsplitを見つける方法が見つかりません。

23

あなたの例では違いはありませんが、Scala=の_String#split_メソッドは実際には正規表現を表すStringを取ります。 "a..b.c".split("""\.\.""")などの必要に応じて、またはRegEx"""\.\.""".r.split("a..b.c")でsplitメソッドを呼び出すことができます。

30
Moritz

REPLはStack Overflowよりも簡単です。例をそのまま貼り付けました。

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)
78
Janx

Rubyの行は、Scalaもそうであり、Array[String]

12
Fabian Steeg

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)
_
3
haffla