这可能是一个愚蠢的问题,但...说我有一个String像4e59它代表一个特殊的Unicode字符.如何将其添加\u到该字符的开头以便正确显示?我尝试过最简单的解决方案:
String str = "4e59";
System.out.println("\\u"+str);
Run Code Online (Sandbox Code Playgroud)
还有其他一些变种,我错过了什么?
\ u在编译时解析,而不是运行时,因此只需在字符串前加上"\ u"就不会起作用.
您可以使用Integer.parseInt在运行时执行此解析:
System.out.println((char)Integer.parseInt("4e59", 16));
Run Code Online (Sandbox Code Playgroud)
其他人已经回答了如何做到这一点,但如果你感兴趣我可以解释为什么前置"\u"不起作用:"\uXXXX"序列在编译时由javac转换为相应的unicode字符(由lexer,这是第一步在编译中,事实上).在你的代码中,词法分析器会看到一个包含just的字符串"\u",因此不会触及它.
该\uXXXX编码将在任何地方工作,而不仅仅是内部的字符串.如果将它们放在Java源文件中,这两行都是相同的:
int i;
\u0069\u006E\u0074 \u0069\u003B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |