1

那么在 Java 中,如何将像 ("\u000A") 这样的字符串粘贴到 char 中呢?我从一个文件中得到了那个字符串,所以我不能这样说: char c = '\u000A';

4

4 回答 4

3

检查StringEscapeUtils

为 Java、Java Script、HTML 和 XML 转义和取消转义字符串。

这应该适用于您想要的

char c = StringEscapeUtils.unescapeJava("\\u000A").charAt(0);

双反斜杠是在 Java 中编码“\u000A”。

于 2012-11-09T21:04:44.953 回答
1

是的,你可以,这是完全有效的代码:

char c = '\uD840';

您的代码中的示例'\u000A'恰好是无效的 Unicode 字符(可能是阅读时的解码问题?)。但是所有有效的 Unicode 字符都可以在单引号之间传递。

于 2012-11-09T21:01:12.080 回答
0

作为对 Oscar Lopez 的回答,它编译并执行得很好:

public class TestUnicode {
    static public void main(String[] argv) {
        System.out.println("This is one line"); \u000A System.out.println("This is another line");
    }
}

要理解的重要一点是,在 Java 编译器中,\uXXXX字符是在扫描程序时翻译的,而不是在将字符插入字符串文字时(这是其他\转义的规范)。将\u000A上面的内容替换为\n,程序不会编译,而是编译器会报告“非法字符:\92”(92 是 的十进制值\)。

于 2012-11-10T00:51:10.553 回答
0

如果没有额外的库,您可以使用这只是 char 的十六进制值这一事实。这个表达式的值就是那个字符:

(char)Integer.parseInt(input.substring(2, 16))

该技术甚至适用于代理对,因为这样您就有两个单独的 \u 符号来表示该对。

于 2012-11-09T21:28:53.587 回答