In Ruby, I did:
"string1::string2".split("::")
In Scala, I can't find how to split using a string, not a single character.
The REPL is even easier than Stack Overflow. I just pasted your example as is.
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)
"aaaaa".split("a") => List("", "", "", "", "", "") -- which for most purposes doesn't offer any useful information. Would rather interpret as empty.In your example it does not make a difference, but the String#split method in Scala actually takes a String that represents a regular expression. So be sure to escape certain characters as needed, like e.g. in "a..b.c".split("""\.\.""") or to make that fact more obvious you can call the split method on a RegEx: """\.\.""".r.split("a..b.c").
\Q and \E instead of doing individual escaping. Just add \Q to the beginning (or \\Q, as needed), and a \E to the end.var (constant)?scala.util.matching.Regex.quote, or Java's equivalent method.java.util.regex.Pattern.quote(str) will do that to an arbitrary String literal (surround with \Q and \E).If you look at the Java implementation you see that the parameter to String#split will be in fact compiled to a regular expression.
There is no problem with "string1::string2".split("::") because ":" is just a character in a regular expression, but for instance "string1|string2".split("|") will not yield the expected result. "|" is the special symbol for alternation in a regular expression.
scala> "string1|string2".split("|")
res0: Array[String] = Array(s, t, r, i, n, g, 1, |, s, t, r, i, n, g, 2)