1. Java中为什么要用转义 ?
2. 常用的转义字符
3. 如何做unescape?
有些情况下我们需要忽略转义,比如将某个java方法的输出作为参数传递传去
4. 对双引号和单引号做unescape
/**
*
* @param text
* @return
*/
public static String unEscapeString(String text) {
StringBuilder unescapeStr = new StringBuilder();
for ( int i=0; i<text.length(); i++ ) {
char curChar = text.charAt(i);
char nextChar = curChar;
if(i+1 < text.length()) {
nextChar = text.charAt(i+1);
}
if(!(curChar == '\\' && (nextChar == '\"' || nextChar == '\''))) {
unescapeStr.append(curChar);
}
}
return unescapeStr.toString();
}
5. 单引号和双引号做转义
public static String escapeString(String str, boolean isDoubleQuote) {
String escapedStr = str;
if(isDoubleQuote) {
escapedStr = str.replace("\\\"", "\"").replace("\"", "\\\"");
} else {
escapedStr = str.replace("\\\"", "\"").replace("\\'", "'").replace("'", "\\'");
}
if(escapedStr.contains("\n")) {
escapedStr = escapedStr.replace("\n", "\\n");
}
return escapedStr;
}
6. API
https://commons.apache.org/proper/commons-text/javadocs/api-release/org/apache/commons/text/StringEscapeUtils.html#escapeJava-java.lang.String-
但是在实际使用中,可能是需要部分忽略转义,所以还是需要自定义转义和忽略转义的方法
escapeJavapublic static final String escapeJava(String input) Escapes the characters in a Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.) So a tab becomes the characters The only difference between Java strings and JavaScript strings is that in JavaScript, a single quote and forward-slash (/) are escaped. Example: input string: He didn't say, "Stop!"
|
|