2017-10-04 72 views
0

我有一個字符串,看起來像這樣:[apple,peach,plum]。 我想用「[」和「]」來分割它獲得了「名單」的項目,但它並沒有與此解決方案的工作:Java - Split strings by「]」

String string = "[apple, peach, plum]"; 
String splitted = (string.split(Pattern.quote("["))[1]).split(Pattern.quote("]"))[0]; 

第一分割工作,但我的時候試着用「]」分割它,它什麼也不做。

(我試過這樣:

String splitted = (string.split(Pattern.quote("["))[1]).split(Pattern.quote(","))[0]; 

和它的工作,所以我覺得這個問題是 「]」 符號。)

任何想法?

+3

我想你想'string.replaceAll(「[\\ [\\]]」,「」);' –

+0

非常感謝您的及時回覆! – SummerFlower

回答

2

你實際上並不想用方括號來分割,你只是想消除它們並用逗號分割。

如果你的輸入是一致的,你可以用下面的習慣:

String string = "[apple, peach, plum]"; 
System.out.println(
    // Array String representation 
    Arrays.toString(
     // removing square brackets 
     string.substring(1, string.length() - 1) 
     // splitting by comma + optional whitespace 
     .split(",\\s*") 
    ) 
); 

輸出(注意,這是由你的項目的String數組)

[apple, peach, plum] 
0

您還可以使用一個Pattern + Matcher與正則表達式\\s*(\\[)?([^,]*)(\\])?\\s*

 Pattern pat = Pattern.compile("\\s*(\\[)?([^,]*)(\\])?\\s*"); 
     Matcher m = pat.matcher(string); 
     m.find(); 
     System.out.println(m.group(2)); 
     m.find(); 
     System.out.println(m.group(2)); 
     ... 

該模式採用所有以逗號(([^,]+))分隔的文件,該文件可以以[ ((\[)?)開頭,並以(\])?結尾。

+0

你能解釋一下這個模式嗎? – Zabuza

+0

該模式採用逗號分隔的所有內容(([^,] +)),並且可以以[((\\ [)?)開始並以(\\]結尾)? – Tuco

+0

爲什麼你在角色類中放置括號? OP中沒有。 – Toto