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

当我有一个string,如:

String x = "hello\nworld"; 

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

例如,打电话时

 System.out.print(x); 

我想看看:

 hello\nworld 

并不是:

 hello world 

编辑:我的道歉,我应该澄清这个问题。 我无法控制'x'是什么,它可能是一个string,我从文件中读取。 我希望x在正常程序执行期间保留其转义字符,但为了debugging目的,我希望看到实际的转义字符。

写一个方法,每个转义字符似乎矫枉过正。 除PrintStream之外没有比这更好的打印库吗?

如果您熟悉Ruby,请考虑使用x.inspect()

一种方法是:

 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))

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

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

你必须逃避斜线本身:

 String x = "hello\\nworld"; 

只是逃避逃生angular色。

 String x = "hello\\nworld"; 

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

Java的逃逸序列与C中的逃逸序列相同。使用String x = "hello\\nworld";

尝试像\\n那样避开反斜线

你可能想看看这个方法 。 虽然这可能会比你打算做的更多。 或者,使用stringreplace新行,回车符和制表符的方法。 请记住,还有诸如unicode和hex序列之类的东西。