2017-10-04 2 views
0

Ich habe eine Zeichenfolge, die wie folgt aussieht: [Apfel, Pfirsich, Pflaume]. ich mag es geteilt durch „[“ und „]“, um die Elemente der „Liste“, aber es mit dieser Lösung nicht funktioniert:Java - Split Strings von "]"

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

Die erste Spaltung funktioniert, aber wenn ich versuche es durch das "]" zu teilen, es macht nichts.

(Ich habe dies versucht:

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

und es funktioniert, so denke ich, das Problem ist die "]" zu unterzeichnen.)

Jede Idee?

+3

Ich glaube, Sie 'string.replaceAll ("[\\ [\\]]", "") gesucht;' –

+0

Vielen Dank für die prompte Antwort! – SummerFlower

Antwort

2

Sie nicht tatsächlich von den eckigen Klammern teilen wollen, möchten Sie sie einfach und durch Komma gespalten zu beseitigen.

Wenn Sie Ihre Eingabe konsistent ist, können Sie das folgende Idiom verwenden:

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

Ausgabe (beachten Sie, das ein String-Array ist Ihr Artikel aus)

[apple, peach, plum] 
0

Sie können auch verwenden ein Muster + Matcher mit Regex \\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)); 
     ... 

Das Muster nimmt alles, was durch ein Komma (([^,]+)) begrenzt wird, und dass durch eine [ ((\[)?) und endet durch (\])? beginnen kann.

+0

Können Sie das Muster erklären? – Zabuza

+0

Das Muster nimmt, dass alle durch ein Komma getrennt ist (([^,] +)), und das kann beginnt mit einem [((\\ [)?), Und endet mit (\\])? – Tuco

+0

Warum setzen Sie Klammern in die Zeichenklasse? Es gibt keine in OP. – Toto