暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java中的转义

羿起小憩 2021-08-30
3343

1. Java中为什么要用转义 ?

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-

但是在实际使用中,可能是需要部分忽略转义,所以还是需要自定义转义和忽略转义的方法

escapeJava

public static final String escapeJava(String input)

Escapes the characters in a String
 using Java String rules.

Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.)

So a tab becomes the characters '\\'
 and 't'
.

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!"
output string: He didn't say, \"Stop!\"
  • Parameters:

  • input
     - String to escape values in, may be null

  • Returns:

  • String with escaped values, null
     if null string input

  • unescapeJava

    public static final String unescapeJava(String input)

    Unescapes any Java literals found in the String
    . For example, it will turn a sequence of '\'
     and 'n'
     into a newline character, unless the '\'
     is preceded by another '\'
    .

    • Parameters:

    • input
       - the String
       to unescape, may be null

    • Returns:

    • a new unescaped String
      null
       if null string input

文章转载自羿起小憩,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论