2010-12-05 40 views
6

",7-6-5-4-3-2-1,".split(',')應該返回什麼?什麼應該「,7-6-5-4-3-2-1,」。split(',')return?

它似乎返回

blank string 
    7-6-5-4-3-2-1 

即。兩個字符串。我希望有一個或三個字符串 - 兩端都是空字符串,或者是','之間的字符串。

我錯了嗎?目前的行爲是否有很好的解釋?

編輯:

好的。所以是的,我有錯誤的期望,沒有,除Java以這種方式工作以外,沒有什麼好的解釋:)。謝謝。

EDIT2:

你可以得到split(",", -1) 所期望的行爲(斯卡拉2.8.1)

回答

12

這是如何工作的。見here,這也解釋了它的Java的正則表達式版本,但它到底是同一件事:所以

尾隨空字符串不包括結果數組英寸

+4

請注意,您可以使用s.split(「,」,-1)來包含尾隨的空字符串, – 2010-12-05 22:26:42

7

行爲是預期的。 String#split(Char)最終(通過StringLike#split(Char)String#split(String))調用了Java String#split(String, 0)這是documented

[...]的圖案將被應用的次數成爲可能,該陣列可具有任何長度,和後空字符串將被丟棄

編輯 - 如果你想在分割字符串的更多控制,看SplitterGuava libraries

Splitter.on(',').split(",7-6-5-4-3-2-1,") 
相關問題