在python我可以这样做:
In [4]: "string1|~|string2".split("|~|")
Out[4]: ['string1', 'string2']
Run Code Online (Sandbox Code Playgroud)
但是,scala中的相同代码并没有给出预期的输出:
scala> "string1|~|string2".split("|~|")
res3: Array[java.lang.String] = Array("", s, t, r, i, n, g, 1, |, ~, |, s, t, r, i, n, g, 2)
Run Code Online (Sandbox Code Playgroud)
我调查了这个问题如何在Scala中用字符串拆分字符串, 似乎我的代码应该可以工作,但事实并非如此.我错过了什么?我如何获得所需的输出?
那是因为splitScala与splitJava中的相同,后者需要正则表达式.因此|,它们需要被转义,因为它们代表or了正则表达式中的运算符.
scala> "string1|~|string2".split("\\|~\\|")
res48: Array[String] = Array(string1, string2)
Run Code Online (Sandbox Code Playgroud)