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