java.util.regex.PatternSyntaxException:索引0附近的未闭合字符类

我试图替换我的字符串中的所有方括号。

这是我的计划

package com; import java.util.ArrayList; import org.apache.commons.lang3.StringUtils; import org.json.JSONException; public class Teste { /** * @param args * @throws JSONException */ public static void main(String[] args) throws JSONException { String str = "[Fountain#Apple#Big(7)]"; str.replaceAll("[", "").replace("]", ""); System.out.println(str); } } 

但我得到了

 Exception in thread "main" 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.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source) at com.Teste.main(Teste.java:19) 

有人可以告诉我如何更换所有方括号?

String.replaceAll采用正则表达式模式,但您根本不需要正则表达式。 您可以使用:

 str = str.replace("[", "").replace("]", ""); 

或者你可以使用正则表达式,如果你想要,一次取代两者:

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

这就是说“用空字符串替换集合中的任何字符(空心方括号,关闭方括号)。 \\是要转义集合中的方括号。

请注意,您需要使用replace (或replaceAll )的结果 – 字符串在Java中是不可变的,因此任何方法(如replace都不会修改现有字符串,它们会返回对具有相关修改的字符串的引用。