Why does this code
public class Apostrophier
{
public static String replace(String s)
{
return s.replace('\u0092','\u0027');
}
}
give
'empty character literal'
when I try to compile ?
The unicode code points in the source file are replaced by the actual character they represents. Since '\u0027'
is for '
(apostrophe). So, your return statement is replaced to:
return s.replace('\u0092',''');
Note: \u0092
will also be replaced by control character.
So, the 2nd argument is an invalid character literal. You can rather use \'
directly.
Replacing the unicode sequences is a very early step of the compilation process. In particular, it happens before parsing literals. So when it's time to parse the literals, \u0027
has already been replaced with '
. Therefore, after the comma, you have '''
, which the compiler can't make sense of.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With