2014-04-15 12 views
5

Kiedy podzielić ciąg przy użyciu , działa zgodnie z oczekiwaniami:Nie można podzielić ciągu za pomocą |

val line1 = "this,is,a,test"     //> line1 : String = this,is,a,test 
    val sLine = line1.split(",") 

jednak jeśli używam | ciąg jest podzielony na elementy charakter i dodaje do tablicy:

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) 

Dlaczego jest to miejsce, ponieważ z | postać ?

+2

Spróbuj uciec go poprzez '„\\ |”' – cmbaxter

Odpowiedz

3

Jako rura jest znakiem specjalnym regex, wierzę, trzeba uciec jak tak "\\|" w celu użycia go do pracy

4

możliwych rozwiązań

val sLine2 = line1.split('|') 

ponieważ ' oznacza znak, pojedynczy znak , split nie traktuje go jako regexp

val sLine2 = line1.split("\\|") 

uciec specjalną naprzemienne | regexp character. To dlatego nie działa. split traktuje | jako regexp zerowej szerokości, a więc ciąg jest odparowywany do jej znaków składowych

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) 
Powiązane problemy