Java将所有方括号替换为字符串

java regex string split

138972 观看

7回复

3587 作者的声誉

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

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 的来源 发布者: 2013 年 1 月 21 日

回应 7


114

81261 作者的声誉

决定

replaceAll方法试图匹配尝试单独替换这些项目时[]不存在的String文字String

String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
作者: Kevin Bowersox 发布者: 2013 年 1 月 21 日

58

404980 作者的声誉

您的正则表达式仅匹配(并删除)后续的方括号。使用此代替:

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

如果您只想用其间的内容替换括号对,则可以使用以下方法:

str = str.replaceAll("\\[(.*?)\\]", "$1");
作者: Bergi 发布者: 2013 年 1 月 21 日

20

1130666 作者的声誉

您目前正在尝试删除确切的字符串[]-两个方括号之间没有任何空格。相反,您要删除全部[并分别删除全部]

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

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

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

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

作者: Jon Skeet 发布者: 2013 年 1 月 21 日

10

35355 作者的声誉

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

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

输出-

Nickname: Chrissman | Power: 1
作者: Subhrajyoti Majumder 发布者: 2013 年 1 月 21 日

6

24318 作者的声誉

您也可以这样做:

String data = "[yourdata]";
String regex = "\\[|\\]";
data  = data .replaceAll(regex, "");
System.out.println(data);
作者: Xar E Ahmer 发布者: 2014 年 5 月 5 日

1

1492 作者的声誉

   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 -

作者: Agilanbu 发布者: 2017 年 5 月 31 日

0

11 作者的声誉

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);
作者: Anmol Devta 发布者: 2018 年 6 月 30 日
32x32