【发布时间】:2012-02-02 21:22:18
【问题描述】:
我正在寻找一种将包含字符转义序列的字符串转换为表示字符的方法。
例如,我想将字符串\"(有两个字符,一个反斜杠和一个双引号)解析为字符"。因此,将一组字符转换为一个字符。
所以可能会做这样的事情,反之亦然:
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);
ch 输出:";
感谢您阅读本文,如果不清楚,我会定期检查并更正。
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 中,相同参数下的输出完全不同,尤其是 " 非常混乱。
【问题讨论】:
-
如何向该问题添加问题?每个答案都是相同的,而不是回答问题......我觉得这更具体,尽管他确实想要和我一样。我也会尝试编辑他的问题。
-
你不能。你怎么觉得那里的答案对你没有帮助?确实是这样。
-
charAt(0) 在所有情况下都会给我 char '\' 而不是 '\n'、'\"' 或任何其他...
-
哦,字符串实际上是
\n,长度为2?我误会了。
标签: java string parsing encoding char