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