2017-05-07 80 views
4

我試圖解析一個CSV文件,其中一些線路可能有失蹤領域,我發現這個奇怪的現象:字符串分割多結束符

scala> val s = "1,2,,," 
s: String = 1,2,,, 

scala> s.split(",") 
res4: Array[String] = Array(1, 2) 

雖然我期待的結果是Array(1,2,"","","") 。我錯過了什麼嗎?如果不是,這種行爲的理由是什麼?

回答

3

該行爲被繼承from Java。也是繼承,但沒有完整記錄,是Java替代方法split()

scala> val s = "1,2,,," 
s: String = 1,2,,, 

scala> s.split(",", -1) 
res0: Array[String] = Array(1, 2, "", "", "") 
+0

感謝您的回覆。這很有道理。根據文檔,*如果n是非正數,那麼該模式將盡可能多地應用,並且該數組可以具有任何長度*。當我嘗試使用不同負數限制的'split'方法時,它給了我相同的輸出。這是否意味着所有負數,因爲無論實際值如何,限制的行爲方式都是相同的? – Psidom

+1

是的。這就是我理解文檔的含義,並且在我(非常有限)的經驗中,我沒有發現任何不同的負面數字行爲。 – jwvh