如何将包含字符转义序列的字符串转换为char?

我正在寻找一种方法将包含字符转义序列的字符串转换为表示的字符。

因此,例如,我想将字符串\" (它有两个字符,一个反斜杠和一个双引号)解析为char " 。 所以,一个字符数组成一个字符。

所以可能会做这样的事情,反之亦然:

 package test; public class Test { private static char parseChar(String string) { char c = 0; if ("\\n".equals(string)) { c = '\n'; }else if ("\\t".equals(string)) { c = '\t'; }else if ("\\r".equals(string)) { c = '\r'; }else if ("\\f".equals(string)) { c = '\f'; }else if ("\\b".equals(string)) { c = '\b'; }else if ("\\\'".equals(string)) { c = '\''; }else if ("\\\"".equals(string)) { c = '\"'; }else if ("\\\\".equals(string)) { c = '\\'; } return c; } public static void main(String[] args) { for (String arg : args) { System.out.println(arg + " : " + (int)parseChar(arg) + " : " + parseChar(arg) + ";"); } } } 

我无法相信java.lang或其他任何东西都没有能为我提供好的(可能是原生的)代码,因为我觉得上面的代码可能不完整而且没有解析每个有问题(可逃避的?)字符,因为我很好是一个菜鸟。 我想要一个可以与String构造函数做同样事情的工具:

 String st = "\""; char ch = st.charAt(0); 

输出:“;

感谢您阅读本文,对不起,如果不清楚,我会定期检查并更正。

PS

当我运行上面的代码时:

java -classpath~ / workspace / MacroRecorder / bin / test.Test \\ n \\ t \\ f \\ r \\ b \\\’\\\“\\\\;

……它输出

 \n : 10 : ; \t : 9 : ; \f : 12 : ; ;r : 13 : \b : 8 :; \' : 39 : '; \" : 34 : "; \\ : 92 : \; 

但在Eclipse中,输出完全不同于相同的参数,尤其是“非常混乱”。

使用StringEscapeUtils进行救援的Apache Commons,你想要的unescapeJava方法我想: http ://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.lang 。串)