Java replace all square brackets in a string
我想把方括号从绳子上取下来,但我不知道怎么做。
1 2 3 4 5
| String str ="[Chrissman-@1]";
str = replaceAll ("\\[\\]", "");
String[] temp = str. split("-@");
System. out. println("Nickname:" + temp [0] +" | Power:" + temp [1]); |
但我的结果是:【克里斯曼1】方括号不能去掉。
我尝试使用不同的regex:"\\[.*?\\]","\\[\\d+\\]"但结果是一样的,方括号仍然附着在字符串上。
编辑:
我试过:
1 2
| str.replaceAll("]","");
str.replaceAll("[",""); |
现在我得到:
1 2 3 4 5 6 7 8 9 10 11
| 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 ) |
replaceall方法正在尝试匹配不在String中的字符串文字[],请尝试单独替换这些项。
1 2
| String str ="[Chrissman-@1]";
str = str. replaceAll("\\[", ""). replaceAll("\\]", ""); |
- +1唯一的意见是应该是str.replaceAll。
- @MarcBaumbach很好,我更新了。谢谢.
- 哎呀,我要被甩了。(我是说这是恭维)
- 不,它不工作。在线程"thel-4"java. UTI.ReGEX.TopnSythExtExcExc:在索引0附近的未关闭字符类[^在java. U.I.ReEX.Fr.Eng.错误(未知源),在Java.UTI.ReXEX.Fr.Calz(未知源),在Java.UTI.ReEX.Fr.Eng.序列(未知源)的Java.UTI.ReEX.Fr.EXPR(未知源)JavaUT.ReExx.PbT.N.CPLIL在Java.UTI.ReEX..Time.init >(未知源)中,在Java.UTI.ReEX.Stult.Java.Lang.Studio中编译(未知源).RePATALL(未知源)
- 方括号绝对是正则表达式中的"特殊"字符-它们用于范围,例如[a-z]。
- @琼斯基特感谢你指出这一点。我正在搜索Java特殊字符列表,但我忘记了RePATALL正在寻找正则表达式。
- @Zbarceachristian我删除了答案中未加括号的部分,对于任何混淆,我深表歉意。原始文件是否有错误?
- 现在开始工作了:(-)非常感谢@kevinbowersox。我必须用Java正则表达式来复习我的知识。我完全忘记了。
- @Zbarceachristian很高兴我能帮忙。
- @Zbarceachristian:但是为什么要使用正则表达式呢?
- 我还能用什么?
- 作为一个侧面的nte卷曲支架,{}也被保留。stackoverflow.com/questions/8751482/&hellip;
- 叹息…方括号的双斜线。如此烦人
您的regex只匹配(并删除)后面的方括号。改为使用:
1
| str = str.replaceAll("\\[|\\]",""); |
如果只想用中间的内容替换括号对,可以使用以下方法:
1
| str = str.replaceAll("\\[(.*?)\\]","$1"); |
您目前正在尝试删除确切的字符串[]-两个方括号之间没有任何内容。相反,您希望删除所有[,并单独删除所有]。
我个人会避免在这里使用replaceAll,因为它会导致更多的混乱,因为regex部分-我会使用:
1
| String replaced = original. replace("[", ""). replace("]", ""); |
如果您真的想进行完全模式匹配,那么只使用使用正则表达式的方法。当您只想替换所有出现的固定字符串时,replace更易于阅读和理解。
(有其他方法可以使用正则表达式形式并真正匹配模式,但我认为上面的代码要简单得多。)
使用regex [\\[\\]]。-
1 2 3
| String str ="[Chrissman-@1]";
String[] temp = str. replaceAll("[\\[\\]]", ""). split("-@");
System. out. println("Nickname:" + temp [0] +" | Power:" + temp [1]); |
输出-
1
| Nickname: Chrissman | Power: 1 |
- 不,它不工作。
- 什么不起作用?专线!
- 对我来说很好。谢谢!
您也可以这样做:
1 2 3 4
| String data ="[yourdata]";
String regex ="\\[|\\]";
data = data . replaceAll(regex, "");
System. out. println(data ); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 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 - |
- 拆下支架后,我想添加-开始时如何实现此示例:-123
- string finalval1=result.replaceall([()]",-");//请使用此代码,这是什么要求?O/P Agilanbu Finalval:-3428/*将()符号替换为-*/
- 我的值是(324),我希望它是-324,使用这个m.replaceall("[()",-");iam得到-324-,请帮助我。
- string result="(3428)";log.e("agilanbu finalval 0",result);string finalval11=result.replaceall("[(]",-");log.e("agilanbu finalval 1",finalval11);string finalval=finalval11.replaceall("[)",");log.e("agilanbu finalval 2",finalval);
1 2 3 4 5 6 7 8 9 10 11 12
| 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 ); |