5

我正在寻找一种解决方案,将 '\''n' 之类的字符序列转换为 '\n',而无需为所有可能的空白命令(如 ('\t'、'\r'、'\n' 等)编写开关.)

有什么内置的或聪明的技巧可以做到这一点吗?

4

1 回答 1

3

不,一旦编译,与afaik"\\n"无关。"\n"我建议执行以下操作:

纯Java:

String input = "\\n hello \\t world \\r";

String from = "ntrf";
String to   = "\n\t\r\f";
Matcher m = Pattern.compile("\\\\(["+from+"])").matcher(input);
StringBuffer sb = new StringBuffer();
while (m.find())
    m.appendReplacement(sb, "" + to.charAt(from.indexOf(m.group(1))));
m.appendTail(sb);

System.out.println(sb.toString());

使用 Apache Commons StringEscapeUtils:

import org.apache.commons.lang3.StringEscapeUtils;

...

System.out.println(StringEscapeUtils.unescapeJava(input));
于 2012-05-17T08:21:48.993 回答