繁体   English   中英

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

[英]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方法针对正则表达式运行 您可能只是想使用“ 替换 ”方法,尽管它的名称,它确实替换了所有出现的情况。

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

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

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

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

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

使用双引号,你必须像这样逃避它们: "\\""

在java中:

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

这将取代[]"没有任何东西。

或者,如果您希望将"[]替换为不同的字符(而不是用空字符串替换所有字符),则可以使用Commons LangStringUtils类中的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM