2013-01-15 44 views
2

刪除空字符串我有一個字符串,看起來是這樣的: [item 1, item2, item3]從正則表達式輸出

和我期望的輸出是:

item 1 
item2 
item3 

我寫了這個代碼:

String text = "[item 1, item2, item3]"; 
String[] text_output = text.split(", |\\[|\\]"); 
for(String item:text_output) 
    fileOutStream.write(("\n"+item).getBytes()); 

和我得到的輸出是正確的,區別在於輸出數組中的第一個元素是一個空字符串。我究竟做錯了什麼?

回答

3

您要求將字符串拆分爲[],以便系統服從並將[之前的空白空間視爲您的第一個元素。有許多方法可以繼續:

  1. 使用text.replaceAll("\\[|\\]", "")分裂之前;
  2. 硬編碼消除分裂前的第一個和最後一個字符:text.substring(1, text.length()-1);
  3. 使用正匹配,而不是消極的:

    Pattern.compile("[^,\\[\\]]+").matcher().find() 
    
+0

有什麼辦法可以修改正則表達式,這樣就不會發生? –

+0

謝謝!任何想法爲什麼在我的初始代碼中沒有空元素也是數組中的最後一個元素?由於'['引起了問題,因爲它是字符串中的第一個字符,爲什麼沒有'''因爲它是最後一個呢? –

+0

因爲這是'String.split'的默認行爲,按照它的Javadoc。 –

0

也就是說當您試圖分裂,第一個字符是要分割的一個情況。您應該創建一個新的數組,並且不要選擇第一個元素(空元素)。

String[] text_output = text.substring(1).split(", |\\[|\\]"); 

如果你想刪除第一個字符,你可以使用它,你將得到你想要的輸出。請記住,當你嘗試分割時,會發生這種情況,並且第一個字符是分裂之一。

0

首先是您使用\\[分割的空字符串,因此您的字符串中的第一個元素是[。只要忽略你的第一個元素。