在python中,我可以这样做:
In [4]: "string1|~|string2".split("|~|")
Out[4]: ['string1', 'string2']
但是,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)
我调查了这个问题How to split a string by a string in Scala,似乎我的代码应该可行,但事实并非如此。我错过了什么?如何获得所需的输出?
答案 0 :(得分:7)
这是因为Scala中的split
与Java中的split
相同,后者需要正则表达式。因此|
需要进行转义,因为它们代表正则表达式中的or
运算符。
scala> "string1|~|string2".split("\\|~\\|")
res48: Array[String] = Array(string1, string2)