Javareplacestring中的所有方括号

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

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

但是我的结果是:[Chrissman | 1]方括号不会被删除。

我尝试使用不同的正则expression式: "\\[.*?\\]""\\[\\d+\\]"但结果是一样的,方括号仍附加在string上。

编辑:

我试过了:

 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) 

replaceAll方法试图匹配String中不存在的String [] ,尝试单独replace这些项目。

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

你的正则expression式只匹配(和删除)后面的方括号。 用这个代替:

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

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

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

你正在尝试删除确切的string[] – 两个方括号之间没有任何东西。 相反,你想删除所有[并单独删除所有]

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

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

只有使用正则expression式的方法,如果你真的想做全模式匹配。 当你只想replace所有出现的固定string时, replace就更容易阅读和理解。

(还有一些使用正则expression式forms的方法,并且真正匹配模式,但是我认为上面的代码是非常简单的。)

使用正则expression式[\\[\\]]

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

输出 –

 Nickname: Chrissman | Power: 1 

你也可以这样做:

 String data = "[yourdata]"; String regex = "\\[|\\]"; data = data .replaceAll(regex, ""); System.out.println(data); 

你也可以这样做。

 String str = "[Chrissman-@1]"; str = str.replace("[", "").replaceAll("]",""); 
 Use this line:) String result = strCurBal.replaceAll("[(" what ever u need to remove ")]", ""); String strCurBal = "(+)3428"; Log.e(" before omit ", strCurBal); String result = strCurBal.replaceAll("[()]", ""); Log.e(" Result Omit ", result); o/p : before omit : (+)3428 Result Omit : +3428 String finalVal = result.replaceAll("[+]", ""); Log.e("finalVal ", finalVal); finalVal : 3428