如何在Java中替换所有“[”,“]”和双引号

时间:2011-11-28 22:14:12

标签: java

我在使用replaceAll方法替换方括号和双引号时遇到了困难。有什么想法吗?

编辑:

到目前为止,我已经尝试过:

replace("\[", "some_thing") // returns illegal escape character
replace("[[", "some_thing") // returns Unclosed character class
replace("^[", "some_thing") // returns Unclosed character class

5 个答案:

答案 0 :(得分:7)

请勿使用replaceAll,请使用replace。前者使用正则表达式,[]是正则表达式中的特殊字符。

String replaced = input.replace("]", ""); //etc

双引号在Java中是特殊的,所以你需要用一个反斜杠("\"")来转义它。

如果要使用正则表达式,则需要转义这些字符并将它们放在字符类中。字符类被[]包围,并且通过在前面加上反斜杠\来转义字符。但是,因为Java中的反斜杠特殊,所以它也需要进行转义,因此要为正则表达式引擎提供反斜杠,必须使用 two 反斜杠({{ 1}})。

最后它应该是这样的(如果你使用正则表达式):

\\[

答案 1 :(得分:3)

replaceAll方法针对Regular Expressions运行。您可能只是想使用“replace”方法,尽管它的名称可以替换所有出现的内容。

查看您的编辑,您可能想要:

someString
.replace("[", "replacement")
.replace("]", "replacement")
.replace("\"", "replacement")

或者,使用适当的正则表达式,如果您愿意学习正则表达式,我会实际推荐的方法(参见Mark Peter的答案以获得一个工作示例)。

答案 2 :(得分:1)

replaceAll()采用正则表达式,因此您必须转义特殊字符。如果您不想要所有花哨的正则表达式,请使用replace()

String s = "[h\"i]";
System.out.println( s.replace("[","").replace("]","").replace("\"","") );

使用双引号,您必须像这样转义它们:"\""

答案 3 :(得分:0)

在java中:

String resultString = subjectString.replaceAll("[\\[\\]\"]", "");

这将取代[]"一无所获。

答案 4 :(得分:0)

或者,如果您希望将"[]替换为不同的字符(而不是使用空字符串替换所有字符),则可以使用replaceEachRepeatedly()方法来自StringUtilsCommons Lang课程。

例如,

String input = "abc\"de[fg]hi\"";
String replaced = StringUtils.replaceEachRepeatedly(input, 
    new String[]{"[","]","\""}, 
    new String[]{"<open_bracket>","<close_bracket>","<double_quote>"});
System.out.println(replaced);

打印以下内容:

abc<double_quote>de<open_bracket>fg<close_bracket>hi<double_quote>