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

nnt7mjpx  于 2023-03-11  发布在  Java
关注(0)|答案(9)|浏览(439)

当我有一个字符串,如:

String x = "hello\nworld";

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

System.out.print(x);

我希望看到:

hello\nworld

而不是:

hello
world

我希望看到实际的转义字符用于调试目的。

vc9ivgsu

vc9ivgsu1#

使用Java库“org.apache.commons.lang”中的方法“字符串转义工具.转义Java”

String x = "hello\nworld";
System.out.print(StringEscapeUtils.escapeJava(x));
3ks5zfa0

3ks5zfa02#

一种方法是:

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();
}

然后运行System.out.print(unEscapeString(x))

iugsix8n

iugsix8n3#

必须转义斜杠本身:

String x = "hello\\nworld";
zf9nrax1

zf9nrax14#

System.out.println("hello \\nworld");

iecba09b

iecba09b5#

Java的转义序列与C相同。使用String x = "hello\\nworld";

8yparm6h

8yparm6h6#

只需转义转义字符。

String x = "hello\\nworld";
mo49yndu

mo49yndu7#

尝试转义反斜杠,如\\n

rjee0c15

rjee0c158#

下面的代码产生八进制转义序列。修改replacement函数以产生你所需要的。

Pattern
 .compile ("[^\\p{Graph}]")
 .matcher ("A\tB\nC")
 .replaceAll
 (
   (final MatchResult r)
   -> String .format ("\\\\%03o", + r .group () .charAt (0)))

另一种可能性是使用String .format ("^%c", r .group () .charAt (0) + '@')-但它只处理控制字符。

dly7yett

dly7yett9#

您可能需要检查这个方法。虽然这可能比您预期的要多。或者,使用字符串替换方法来替换新行、回车和制表符。请记住,还有Unicode和十六进制序列这样的东西。

相关问题