java.util.regex.PatternSyntaxException: nicht geschlossene Charakter-Klasse in der Nähe von index 0
Ich versuche, Sie zu ersetzen alle eckigen Klammern habe ich meine Zeichenfolge .
Dies ist mein Programm
package com;
import java.util.ArrayList;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;
public class Teste {
/**
* @param args
* @throws JSONException
*/
public static void main(String[] args) throws JSONException {
String str = "[Fountain#Apple#Big(7)]";
str.replaceAll("[", "").replace("]", "");
System.out.println(str);
}
}
Aber ich bin immer
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
[
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at com.Teste.main(Teste.java:19)
Könnte jemand mir bitte sagen, wie ersetzt alle eckigen Klammern ??
Du musst angemeldet sein, um einen Kommentar abzugeben.
String.replaceAll
nimmt einen regulären Ausdruck Muster, aber Sie brauchen nicht den regulären Ausdrücken überhaupt. Sie verwenden können:Oder Sie könnte einen regex verwenden, wenn Sie möchten, ersetzen Sie beide in einem Rutsch:
Das sagt "ersetzen, jeder Charakter in der Gruppe (offene eckige Klammer, schließen eckige Klammer) mit dem leeren string. Die
\\
ist zu entkommen, die eckigen Klammern innerhalb des Satzes.Beachten Sie, dass Sie müssen verwenden Sie das Ergebnis
replace
(oderreplaceAll
) - strings sind unveränderlich in Java, also Methoden, wiereplace
ändern Sie nicht die bestehenden string, Sie geben einen Verweis auf eine neue string mit den relevanten änderungen.