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

Zba*_*ian 62 java regex string split

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

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

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

但我的结果是:[克里斯曼| 1]方括号不会被删除.

我试着用不同的正则表达式:"\\[.*?\\]","\\[\\d+\\]" 但结果是一样的,方括号仍然附着在弦上.

编辑:

我试过了:

str.replaceAll("]", "");
str.replaceAll("[", "");
Run Code Online (Sandbox Code Playgroud)

现在我得到了:

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)
Run Code Online (Sandbox Code Playgroud)

Kev*_*sox 117

replaceAll方法试图匹配try []文件中不存在的字符串文字,String分别替换这些项目.

String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
Run Code Online (Sandbox Code Playgroud)

  • 哎呀我快要受到谴责了.(我的意思是这是一种恭维) (2认同)

Ber*_*rgi 60

你的正则表达式只匹配(并删除)后面的方括号.请改用:

str = str.replaceAll("\\[|\\]", "");
Run Code Online (Sandbox Code Playgroud)

如果您只想用两者之间的内容替换括号对,可以使用:

str = str.replaceAll("\\[(.*?)\\]", "$1");
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 20

您当前正在尝试删除确切的字符串[]- 两个方括号,它们之间没有任何内容.相反,您想要删除所有[并单独删除所有].

我个人会避免replaceAll在这里使用,因为它引入了更多的混淆由于正则表达式部分 - 我使用:

String replaced = original.replace("[", "").replace("]", "");
Run Code Online (Sandbox Code Playgroud)

如果您真的想要进行完整模式匹配,请仅使用采用正则表达式的方法.当您只想替换所有出现的固定字符串时,replace更易于阅读和理解.

(有一些替代方法使用正则表达式形式并且真正匹配模式,但我认为上面的代码非常简单.)


Sub*_*der 11

使用正则表达式[\\[\\]]-

String str = "[Chrissman-@1]";
String[] temp = str.replaceAll("[\\[\\]]", "").split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
Run Code Online (Sandbox Code Playgroud)

输出 -

Nickname: Chrissman | Power: 1
Run Code Online (Sandbox Code Playgroud)


Xar*_*mer 6

您也可以这样做:

String data = "[yourdata]";
String regex = "\\[|\\]";
data  = data .replaceAll(regex, "");
System.out.println(data);
Run Code Online (Sandbox Code Playgroud)