[英]How do I replace all “[”, “]” and double quotes in Java
我在使用replaceAll方法替换方括号和双引号时遇到了困难。 有任何想法吗?
编辑:
到目前为止,我已经尝试过:
replace("\[", "some_thing") // returns illegal escape character
replace("[[", "some_thing") // returns Unclosed character class
replace("^[", "some_thing") // returns Unclosed character class
不要使用replaceAll
,使用replace
。 前者使用正则表达式, []
是正则表达式中的特殊字符。
String replaced = input.replace("]", ""); //etc
双引号在Java中是特殊的,因此您需要使用单个反斜杠( "\\""
)来转义它。
如果要使用正则表达式,则需要转义这些字符并将它们放在字符类中。 字符类被[]
包围,并且通过在前面加上反斜杠\\
转义字符。 但是,因为反斜杠在Java中也很特殊,所以它也需要进行转义,因此要为正则表达式引擎提供反斜杠,必须使用两个反斜杠( \\\\[
)。
最后它应该看起来像这样(如果你使用正则表达式):
String replaced = input.replaceAll("[\\[\\]\"]", "");
replaceAll()
采用正则表达式,因此您必须转义特殊字符。 如果你不想要所有花哨的正则表达式,请使用replace()
。
String s = "[h\"i]";
System.out.println( s.replace("[","").replace("]","").replace("\"","") );
使用双引号,你必须像这样逃避它们: "\\""
在java中:
String resultString = subjectString.replaceAll("[\\[\\]\"]", "");
这将取代[]"
没有任何东西。
或者,如果您希望将"
, [
和]
替换为不同的字符(而不是用空字符串替换所有字符),则可以使用Commons Lang的StringUtils类中的replaceEachRepeatedly()
方法。
例如,
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.