2017-10-04 20 views
0

私は文字列を持っています。これは[apple、peach、plum]のようです。 は、私が「リスト」の項目を取得するには、「[」と「]」で、それを分割したいが、それは、このソリューションでは動作しません:Java - "]で区切られた文字列"

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

実際に角括弧で区切りたいとは限りません。それらを削除してコンマで区切りたいだけです。

[apple, peach, plum] 
0

ます。また、使用することができます(これはあなたの項目からなる文字列の配列であることに注意)

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*") 
    ) 
); 

出力:あなたの入力が一致している場合

は、次のイディオムを使用することができます正規表現のパターン+マッチャー\\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

関連する問題