java中的转义引号函数不起作用
我需要先从字符串中转义引号,然后再打印出来 我已经编写了一个函数,使用字符数组尽可能显式。但这个函数所做的只是打印出自己的输入:java中的转义引号函数不起作用,java,escaping,quotes,Java,Escaping,Quotes,我需要先从字符串中转义引号,然后再打印出来 我已经编写了一个函数,使用字符数组尽可能显式。但这个函数所做的只是打印出自己的输入: public static String escapeQuotes(String myString) { char[] quote=new char[]{'"'}; char[] escapedQuote=new char[]{'\\' , '"'}; return myString.replaceAll(new String(quote), new Strin
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设计的
编辑从替换所有文档
请注意,替换字符串中的反斜杠(\)和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果
所以,第二个参数中的反斜杠是个问题 文档的直接链接
,java.lang.String)我会尝试
replace
而不是replaceAll
。第二个版本是为正则表达式AFAIK设计的
编辑从替换所有文档
请注意,替换字符串中的反斜杠(\)和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果
所以,第二个参数中的反斜杠是个问题 文档的直接链接
您还需要将
\
转义到\
中,否则原始字符串中的任何\
都将保留\
,解析器会认为一个特殊字符(例如“
)必须跟在\
后面,因此会混淆
放入Java文本字符串中的每个\
或“
字符都需要在\
前面
您希望使用replace
而不是replaceAll
,因为前者处理字符串,后者处理regexp。在您的情况下,regexp会更慢,并且需要更多的反斜杠
replace
与CharSequence
s一起使用,即String
s在本例中从Java 1.5开始就存在
myString = myString.replace("\\", "\\\\");
myString = myString.replace("\"", "\\\"");
您还需要将
\
转义到\
中,否则原始字符串中的任何\
都将保留\
,并且解析器会认为一个特殊字符(例如“
)必须跟在\
后面,这将导致混淆
放入Java文本字符串中的每个\
或“
字符都需要在\
前面
您希望使用replace
而不是replaceAll
,因为前者处理字符串,后者处理regexp。在您的情况下,regexp会更慢,并且需要更多的反斜杠
replace
与CharSequence
s一起使用,即String
s在本例中从Java 1.5开始就存在
myString = myString.replace("\\", "\\\\");
myString = myString.replace("\"", "\\\"");
Java提供了用于转义正则表达式和替换的现成方法:
public static String escapeQuotes(String myString) {
return myString.replaceAll(Pattern.quote("\""), Matcher.quoteReplacement("\\\""));
}
Java提供了用于转义正则表达式和替换的现成方法:
public static String escapeQuotes(String myString) {
return myString.replaceAll(Pattern.quote("\""), Matcher.quoteReplacement("\\\""));
}
我正要发布它,但后来看到:replace()“返回一个新字符串,该字符串是将该字符串中所有出现的oldChar替换为newChar后生成的。”所以replace和replaceAll之间的唯一区别是使用reg ex?怎么回事?@Jere我想,结果字符串中的美元符号和反斜杠被用来表示“regex变量”。我已经用文档中的一个引号更新了答案。我正要发布这个答案,但后来看到:replace()“返回一个新字符串,该字符串中所有出现的oldChar都替换为newChar。”所以replace和replaceAll之间的唯一区别是使用reg-ex?怎么回事?@Jere我想,结果字符串中的美元符号和反斜杠被用来表示“regex变量”。我已经用文档中的引用更新了答案