当我使用,
分割字符串时,按预期工作:
val line1 = "this,is,a,test" //> line1 : String = this,is,a,test
val sLine = line1.split(",")
但是如果我使用|
,则将String拆分为其字符元素并添加到数组中:
val line1 = "this|is|a|test" //> line1 : String = this|is|a|test
val sLine = line1.split("|") //> sLine : Array[String] = Array("", t, h, i, s, |, i, s, |, a, |, t, e, s, t)
为什么会因为|而发生这种情况性格?
答案 0 :(得分:4)
可能的解决方案
val sLine2 = line1.split('|')
因为'
表示一个字符,一个字符,split
不会将其视为正则表达式
val sLine2 = line1.split("\\|")
转义特殊交替|
正则表达式字符。这就是为什么它不起作用。 split
将|
视为零宽度正则表达式,因此字符串被蒸发为其组成字符
答案 1 :(得分:3)
由于管道是一个特殊的正则表达式字符,我相信你需要像"\\|"
那样转义它才能使它工作
答案 2 :(得分:1)
scala> val line1 = "this,is,a,test"
line1: java.lang.String = this,is,a,test
scala> line1.split(",")
res2: Array[java.lang.String] = Array(this, is, a, test)
scala> var line2 = "this|is|a|test"
line2: java.lang.String = this|is|a|test
scala> line2.split("\\|")
res3: Array[java.lang.String] = Array(this, is, a, test)