我想从字符串中删除方括号,但我不知道如何。
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)
答案 0 :(得分:111)
replaceAll方法正在尝试匹配[]
尝试中不存在的字符串文字String
,并单独替换这些项目。
String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
答案 1 :(得分:56)
您的正则表达式仅匹配(并删除)后续的方括号。请改用:
str = str.replaceAll("\\[|\\]", "");
如果您只想用两者之间的内容替换括号对,可以使用:
str = str.replaceAll("\\[(.*?)\\]", "$1");
答案 2 :(得分:20)
您目前正在尝试删除完全字符串[]
- 两个方括号,它们之间没有任何内容。相反,您要删除所有[
并单独删除所有]
。
就个人而言,我会避免在这里使用replaceAll
,因为它引入了更多的混淆因为正则表达式部分 - 我会使用:
String replaced = original.replace("[", "").replace("]", "");
如果确实想要进行完整模式匹配,则只使用采用正则表达式的方法。当您只想替换所有出现的固定字符串时,replace
更易于阅读和理解。
(有一些替代方法使用正则表达式形式并且真正匹配模式,但我认为上面的代码非常简单。)
答案 3 :(得分:9)
使用正则表达式[\\[\\]]
-
String str = "[Chrissman-@1]";
String[] temp = str.replaceAll("[\\[\\]]", "").split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
输出 -
Nickname: Chrissman | Power: 1
答案 4 :(得分:6)
您也可以这样做:
String data = "[yourdata]";
String regex = "\\[|\\]";
data = data .replaceAll(regex, "");
System.out.println(data);
答案 5 :(得分:1)
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 -
&#13;
答案 6 :(得分: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);
答案 7 :(得分:0)
我使用这个正则表达式来替换括号内的每个字符串:
var= var.replaceAll("\\[\\w+", "[*").replaceAll("\\]", "]");