是否有一个解析转义字符的Java函数?

我正在寻找内置的Java函数,例如可以将"\\n"转换为"\n"

像这样的东西:

 assert parseFunc("\\n") = "\n" 

或者我是否必须手动搜索并替换所有转义字符?

您可以使用Apache Commons Lang的 StringEscapeUtils.unescapeJava(s) 。 它适用于所有转义序列,包括Unicode字符(即\u1234 )。

https://commons.apache.org/lang/apidocs/org/apache/commons/lang3/StringEscapeUtils.html#unescapeJava-java.lang.String-

安东尼99%是正确的 – 因为反斜杠也是正则表达式中的保留字符,它需要第二次转义:

 result = myString.replaceAll("\\\\n", "\n"); 

只需使用字符串自己的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开发人员)

如果您不想列出所有可能的转义字符,可以将其委派给Properties行为

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

这会处理所有可能的字符