为什么这段代码
public class Apostrophier
{
public static String replace(String s)
{
return s.replace('\u0092','\u0027');
}
}
给
'空字符文字'
当我尝试编译时?
答案 0 :(得分:11)
源文件中的unicode代码点将替换为它们所代表的实际字符。由于'\u0027'
适用于'
(撇号)。因此,您的return语句将替换为:
return s.replace('\u0092',''');
注意: \u0092
也将被控制字符替换。
因此,第二个参数是无效的字符文字。您可以直接使用\'
。
答案 1 :(得分:5)
替换unicode序列是编译过程中非常早期的一步。特别是,它在解析文字之前发生。因此,在解析文字的时候,\u0027
已经被'
取代了。因此,在逗号之后,您有'''
,这是编译器无法理解的。