scala string.split不起作用
下面是我的REPL输出。我不知道为什么string.split在这里不起作用scala string.split不起作用,string,scala,split,String,Scala,Split,下面是我的REPL输出。我不知道为什么string.split在这里不起作用 val s = "Pedro|groceries|apple|1.42" s: java.lang.String = Pedro|groceries|apple|1.42 scala> s.split("|") res27: Array[java.lang.String] = Array("", P, e, d, r, o, |, g, r, o, c, e, r, i, e, s, |, a, p, p, l
val s = "Pedro|groceries|apple|1.42"
s: java.lang.String = Pedro|groceries|apple|1.42
scala> s.split("|")
res27: Array[java.lang.String] = Array("", P, e, d, r, o, |, g, r, o, c, e, r, i, e, s, |, a, p, p, l, e, |, 1, ., 4, 2)
如果使用引号,则要求使用正则表达式拆分
|
是“或”字符,因此您的正则表达式不匹配或不匹配。所以一切都是分裂的
如果您使用
split(“|”)
或split(“\\\\”)
您应该得到您想要的。split以正则表达式作为第一个参数,因此您的调用被解释为“空字符串或空字符串”。要获得预期的行为,需要转义管道字符“\\\\”。
是一个特殊的正则表达式字符,用作或操作的逻辑运算符
因为接受了正则表达式,所以使用“none或none”来拆分字符串,这是正则表达式拆分的另一个特点,none本质上是指“在每个字符之间”
为了得到您想要的,您需要正确地避开正则表达式模式。要转义该模式,您需要在字符前面加上\
,因为\
是一个特殊的字符串
字符(比如\t
和\r
),您实际上需要双重转义,以便最终得到s.split(\\\\124;”
)
有关完整的Java正则表达式语法,请参阅。good one。在scala中,“”和“”之间的区别是什么?“stuff”“”
引用一个文本字符串<代码>“填充”
解释转义字符。由于反斜杠在Java字符串和正则表达式中都是转义字符,因此需要转义转义字符才能将其放入正则表达式:“\\\\”
。这很快就会让人困惑,所以最好使用三重引号并使用文字字符串。。。“somestring”是否与“somestring”相同?“c”是单个字符<代码>“这是一个(文字)字符串,不是一个字符。”
啊……我知道了。我来自JavaScript,看起来我忘记了一些基本的东西。