我正在寻找内置的Java函数,例如可以将"\\n"
转换为"\n"
。
这样的事情:
assert parseFunc("\\n") = "\n"
或者我是否必须手动搜索并替换所有转义的字符?
答案 0 :(得分:9)
您可以使用Apache Commons Lang中的StringEscapeUtils.unescapeJava(s)
。它适用于所有转义序列,包括Unicode字符(即\u1234
)。
答案 1 :(得分:3)
Anthony 99%是正确的 - 因为反斜杠也是正则表达式中的保留字符,它需要第二次转义:
result = myString.replaceAll("\\\\n", "\n");
答案 2 :(得分:1)
只需使用字符串自己的replaceAll方法。
result = myString.replaceAll("\\n", "\n");
但是,如果您想匹配所有转义序列,那么您可以使用匹配器。有关使用Matcher的一个非常基本的示例,请参阅http://www.regular-expressions.info/java.html。
Pattern p = Pattern.compile("\\(.)");
Matcher m = p.matcher("This is tab \\t and \\n this is on a new line");
StringBuffer sb = new StringBuffer();
while (m.find()) {
String s = m.group(1);
if (s == "n") {s = "\n"; }
else if (s == "t") {s = "\t"; }
m.appendReplacement(sb, s);
}
m.appendTail(sb);
System.out.println(sb.toString());
根据要处理的转义的数量和类型,您只需要使赋值更复杂。 (警告这是空气代码,我不是Java开发人员)
答案 3 :(得分:0)
如果您不想列出所有可能的转义字符,可以将其委托给属性行为
String escapedText="This is tab \\t and \\rthis is on a new line";
Properties prop = new Properties();
prop.load(new StringReader("x=" + escapedText + "\n"));
String decoded = prop.getProperty("x");
System.out.println(decoded);
这会处理所有可能的字符