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

新手上路,请多包涵

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

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

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

但我的结果是:[克里斯曼 | 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)

原文由 Zbarcea Christian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 950
2 个回答

replaceAll 方法试图匹配字符串文字 [] 它不存在于 String 尝试分别替换这些项目。

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

原文由 Kevin Bowersox 发布,翻译遵循 CC BY-SA 3.0 许可协议

您的正则表达式仅匹配(并删除)后续方括号。改用这个:

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

如果你只想用中间的内容替换括号对,你可以使用这个:

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

原文由 Bergi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题