无法使用|拆分字符串

时间:2014-04-15 13:50:43

标签: string scala

当我使用,分割字符串时,按预期工作:

  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)

为什么会因为|而发生这种情况性格?

3 个答案:

答案 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)