Java 替换字符串中的所有方括号

2022-08-31 12:18:10

我想从字符串中删除方括号,但我不知道如何操作。

String str = "[Chrissman-@1]";
str = replaceAll("\\[\\]", "");

String[] temp = str.split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);

但我的结果是:[Chrissman | 1]方括号不会被删除。

我尝试使用不同的正则表达式:,但结果是相同的,方括号仍然附着在字符串上。"\\[.*?\\]""\\[\\d+\\]"

编辑:

我试过了:

str.replaceAll("]", "");
str.replaceAll("[", "");

现在我得到:

Exception in thread "Thread-4" 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)

答案 1

replaceAll 方法正在尝试匹配字符串文本,该文本在尝试单独替换这些项时不存在。[]String

String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");

答案 2

您的正则表达式仅匹配(并删除)后续方括号。请改用以下内容:

str = str.replaceAll("\\[|\\]", "");

如果您只想将括号对替换为介于两者之间的内容,则可以使用以下方法:

str = str.replaceAll("\\[(.*?)\\]", "$1");