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

标签 java string parsing encoding 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 或其他软件中没有任何东西可以为此提供好的(也许是 native 的)代码,因为我觉得上面的代码可能不完整并且没有解析每个有问题的(可逃避的?)字符,因为好吧,我是个菜鸟。 我想要一个可以做与 String 构造函数相同的事情的工具:

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

ch output : ";

感谢您阅读本文,如果有不清楚的地方,我深表歉意,我会定期检查,如果有问题,我会更正。

附言:

当我运行上面的代码时:

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中,同样的参数,输出的结果完全不同,尤其是"非常乱。

最佳答案

Apache Commons 使用 StringEscapeUtils 进行救援,我认为您需要 unescapeJava 方法:http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.lang.String)

关于java - 如何将包含字符转义序列的字符串转换为 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735947/

相关文章:

java - JSF 代码格式化程序或 Eclipse XML 编辑器,每个标签换行?

java - Swing 应用程序未在 JPanel 内绘制 JComponent

regex - 删除一定长度的单词之间的空格

R:如何匹配或过滤字符串相同但顺序不同的变量?

java - 使用javacc解析 block 注释

c++ - Qt:如何解析json中的数字

java - 如何只在主 Activity 中显示菜单?

java - 对谷歌驱动器实现服务器端授权的问题

c - 程序无法运行(编译问题)

java - JSOUP同时提取多个元素