在指定unicode文字的java代码中获取空字符文字错误

时间:2014-01-17 17:17:29

标签: java unicode unicode-literals

为什么这段代码

 public class Apostrophier
{
    public static String replace(String s)
    {
        return s.replace('\u0092','\u0027');
    }
}

'空字符文字'

当我尝试编译时?

2 个答案:

答案 0 :(得分:11)

源文件中的unicode代码点将替换为它们所代表的实际字符。由于'\u0027'适用于'(撇号)。因此,您的return语句将替换为:

  return s.replace('\u0092',''');  

注意: \u0092也将被控制字符替换。

因此,第二个参数是无效的字符文字。您可以直接使用\'

答案 1 :(得分:5)

替换unicode序列是编译过程中非常早期的一步。特别是,它在解析文字之前发生。因此,在解析文字的时候,\u0027已经被'取代了。因此,在逗号之后,您有''',这是编译器无法理解的。