2012-01-19 223 views
13

可能重複:
Java split() method strips empty strings at the end?類字符串的分割方法忽略分號分隔

在Java中,我使用的字符串分割方法來分割含有由分號分隔的值的字符串。

目前,我有以下線在99%的情況下工作。

String[] fields = optionsTxt.split(";"); 

使用下面的字符串一切都是完美的:

"House;Car;Street;Place" => [House] [Car] [Street] [Place] 

但是當我使用下面的字符串,分割方法忽略了最後兩個分號。

"House;Car;;" => [House][Car] 

怎麼了?或者有任何解決方法?

+0

您是否期待空間爲第三個輸出? – Tudor

+0

是,「房子;汽車;;」應該導致[House] [Car] [] [] – endian

回答

17

迭代嘗試以下:

String[] = data.split(";", -1); 

參考JavaDoc規定的split方法回吐兩個論點s的細節。

當調用String.split(String),它調用String.split(String, 0)和丟棄尾部空字符串(如文檔說的話),調用String.split(String, n)n < 0也不會放棄任何東西的時候。

+0

是的! String [] = data.split(「;」);無法處理多個分號。加-1解決了它! –

1

您可以使用番石榴的Splitter

從技術文檔:

Splitter.on(',').split("foo,,bar, quux") 

將返回["foo", "", "bar", " quux"]

+0

我認爲OP不希望'.trimResults()。omitEmptyStrings();'... – thejh

1

這在Java API的javadoc明確提到:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String

「尾隨空字符串,因此不包含在所得數組中」。

如果你想空字符串,嘗試使用相同方法的雙參數版本,並使用負的第二個參數:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String,%20int

「如果n是非正值,那麼該模式將盡可能多次應用,並且該數組可以有任意長度。」

編輯:嗯,我與錨點的鏈接不工作。

相關問題