在指定Unicode文字的Java代码中,遇到空字符字面量错误

7

为什么这段代码会

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

编译时出现“空字符字面量”的错误?

2个回答

11

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

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

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

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


你也可以写成s.replace('\u0092','\u005c\u0027')!!! 不过你可能不想这么做。(\u005c是反斜杠) - ajb
1
当然,谢谢。 - Paul Taylor

5
替换Unicode序列是编译过程的早期步骤。具体来说,它发生在解析字面值之前。因此,当解析字面值时,\u0027已经被替换为'。所以,在逗号后面,你有''',这使得编译器无法理解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接