77

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

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)
4

8 回答 8

155

replaceAll 方法正在尝试匹配尝试单独替换这些项目[]中不存在的字符串文字。String

String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
于 2013-01-21T15:43:55.293 回答
73

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

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

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

str = str.replaceAll("\\[(.*?)\\]", "$1");
于 2013-01-21T15:44:35.117 回答
27

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

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

String replaced = original.replace("[", "").replace("]", "");

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

(有使用正则表达式形式并真正匹配模式的替代方法,但我认为上面的代码要简单得多。)

于 2013-01-21T15:45:06.757 回答
12

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

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

输出 -

Nickname: Chrissman | Power: 1
于 2013-01-21T15:45:59.130 回答
7

你也可以这样做:

String data = "[yourdata]";
String regex = "\\[|\\]";
data  = data .replaceAll(regex, "");
System.out.println(data);
于 2014-05-05T05:55:45.157 回答
1

我使用这个正则表达式替换括号内的每个字符串:

var= var.replaceAll("\\[\\w+", "[*").replaceAll("\\]", "]");
于 2021-03-11T18:45:30.723 回答
0

   Use this line:) String result = strCurBal.replaceAll("[(" what ever u need to remove ")]", "");

    String strCurBal = "(+)3428";
    Log.e("Agilanbu before omit ", strCurBal);
    String result = strCurBal.replaceAll("[()]", ""); // () removing special characters from string
    Log.e("Agilanbu after omit ", result);
   
    o/p :
    Agilanbu before omit : (+)3428
    Agilanbu after omit :  +3428

    String finalVal = result.replaceAll("[+]", ""); // + removing special characters from string
    Log.e("Agilanbu finalVal  ", finalVal);
    o/p
    Agilanbu finalVal : 3428
            
    String finalVal1 = result.replaceAll("[+]", "-"); // insert | append | replace the special characters from string
    Log.e("Agilanbu finalVal  ", finalVal1);
    o/p
    Agilanbu finalVal : -3428  // replacing the + symbol to -

于 2017-05-31T06:55:31.417 回答
0
String str, str1;
Scanner sc = new Scanner(System.in);

System.out.print("Enter a String : ");
str = sc.nextLine();


str1 = str.replaceAll("[aeiouAEIOU]", "");



System.out.print(str1);
于 2018-06-30T05:14:08.033 回答