[英]Escape quote function in java not working
在打印出来之前,我需要对字符串中的引号进行转义。
我编写了一个函数,使用char数组尽可能明确。 但是此功能似乎要做的就是打印出自己的输入:
public static String escapeQuotes(String myString) {
char[] quote=new char[]{'"'};
char[] escapedQuote=new char[]{'\\' , '"'};
return myString.replaceAll(new String(quote), new String(escapedQuote));
}
public static void main(String[] args) throws Exception {
System.out.println("asd\"");
System.out.println(escapeQuotes("asd\""));
}
我希望它的输出是:asd“ asd \\”
但是我得到的是:asd“ asd”
任何想法如何正确地做到这一点?
谢谢
我会尝试replace
而不是replaceAll
。 第二个版本是为正则表达式AFAIK设计的。
编辑
来自replaceAll文档
请注意,替换字符串中的反斜杠(\\)和美元符号($)可能导致结果与被视为文字替换字符串时的结果不同
因此,第二个参数中的反斜杠是一个问题。
您还需要将\\
转义为\\\\
否则原始字符串中的任何\\
都将保留\\
和解析器,认为必须在\\
后跟一个特殊字符(例如"
)会感到困惑。
放入Java文字字符串中的每个\\
或"
字符都必须以\\
开头。
您要使用replace
而不是replaceAll
因为前者处理字符串,后者处理正则表达式。 在您的情况下,正则表达式将变慢,并且需要更多的反斜杠。
与CharSequence
一起使用的replace
,即从Java 1.5开始存在String
。
myString = myString.replace("\\", "\\\\");
myString = myString.replace("\"", "\\\"");
Java随附了用于转义正则表达式和替换的现成方法:
public static String escapeQuotes(String myString) {
return myString.replaceAll(Pattern.quote("\""), Matcher.quoteReplacement("\\\""));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.