如何在Java中打印转义字符?

jab*_*sad 21 java

当我有一个字符串,如:

String x = "hello\nworld";
Run Code Online (Sandbox Code Playgroud)

在使用时,如何让Java打印实际的转义字符(而不是将其解释为转义字符)System.out

例如,在打电话时

System.out.print(x);
Run Code Online (Sandbox Code Playgroud)

我想看看:

hello\nworld
Run Code Online (Sandbox Code Playgroud)

并不是:

hello
world
Run Code Online (Sandbox Code Playgroud)

我想看到实际的转义字符用于调试目的.

Jud*_*eng 28

在Java库"org.apache.commons.lang"中使用方法"StringEscapeUtils.escapeJava"

String x = "hello\nworld";
System.out.print(StringEscapeUtils.escapeJava(x));
Run Code Online (Sandbox Code Playgroud)

  • 从3.6版开始不推荐使用“ org.apache.commons.lang”中的StringEscapeUtils.escapeJava,请改用commons-text StringEscapeUtils (2认同)

Vla*_*lad 17

一种方法是:

public static String unEscapeString(String s){
    StringBuilder sb = new StringBuilder();
    for (int i=0; i<s.length(); i++)
        switch (s.charAt(i)){
            case '\n': sb.append("\\n"); break;
            case '\t': sb.append("\\t"); break;
            // ... rest of escape characters
            default: sb.append(s.charAt(i));
        }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

并在运行System.out.print(unEscapeString(x)).

  • 有,我想,但我没用过。关于此,还有另一个堆栈溢出 [问题](http://stackoverflow.com/questions/3537706/howto-unescape-a-java-string-literal-in-java)。 (2认同)