2014-04-15 15 views
5

अपेक्षा के अनुरूप जब मैं एक स्ट्रिंग , काम करता है का उपयोग कर विभाजित:स्ट्रिंग को विभाजित करने में असमर्थ। |

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

लेकिन अगर मैं | का उपयोग स्ट्रिंग अपने चरित्र तत्वों में विभाजित है और सरणी के लिए कहा:

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) 

क्यों क्योंकि इस से होने वाली है का | चरित्र?

+2

'के माध्यम से इसे से बचने की कोशिश करो" \\ | "' – cmbaxter

उत्तर

3

पाइप एक विशेष regex चरित्र है, मैं तुम्हें आदेश में ऐसा "\\|" है जैसे कि यह से बचने के लिए यह

4

संभव समाधान

val sLine2 = line1.split('|') 

काम करने के लिए क्योंकि ' एक चरित्र को दर्शाता है, एक भी चरित्र की जरूरत का मानना ​​है , split एक regexp के रूप में यह इलाज नहीं करता

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

विशेष प्रत्यावर्तन से बचने के लिए | regexp चरित्र। यही कारण है कि यह काम नहीं कर रहा है। split एक शून्य चौड़ाई regexp के रूप में | इलाज है और इतने स्ट्रिंग उसके घटक अक्षरों में vapourized है

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) 
संबंधित मुद्दे