如何在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序列之类的东西。