Java 空格字符序列到空格

Java 空格字符序列到空格,java,whitespace,Java,Whitespace,我正在寻找一种解决方案,将字符序列(如'\''n'转换为'\n',而无需为所有可能的空格命令(如'\t','\r','\n',等)编写开关 有什么内置的或聪明的技巧可以做到这一点吗?没有,一旦编译,“\\n”与“\n”afaik无关。我建议采取以下措施: 纯Java: String input = "\\n hello \\t world \\r"; String from = "ntrf"; String to = "\n\t\r\f"; Matcher m = Pattern.comp

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

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

没有,一旦编译,
“\\n”
“\n”
afaik无关。我建议采取以下措施:

纯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());
import org.apache.commons.lang3.StringEscapeUtils;

...

System.out.println(StringEscapeUtils.unescapeJava(input));
使用Apache Commons StringEscapeUtils:

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());
import org.apache.commons.lang3.StringEscapeUtils;

...

System.out.println(StringEscapeUtils.unescapeJava(input));

你可以使用的。很难完全理解这个问题。你能提供一些输入和预期输出吗?McDowell+1的可能副本-工作完美@anubhava,参见aioobes示例。他把它钉死了。