Почему я не могу использовать \ u000D и \ u000A как CR и LF в Java? - PullRequest
43 голосов
/ 05 октября 2010

Почему я не могу использовать \ u000D и \ u000A в качестве CR и LF в Java?Выдает ошибку при компиляции кода:

illegal line end in character literal

Ответы [ 2 ]

110 голосов
/ 05 октября 2010

Выходные коды Unicode предварительно обрабатываются перед запуском компилятора.Поэтому, если вы поместите \u000A в строковый литерал, как это:

String someString = "foo\u000Abar";

Он будет скомпилирован точно так, как если бы вы написали:

String someString = "foo
bar";

Придерживайтесь \r (кареткаreturn; 0x0D) и \n (перевод строки; 0x0A)

Бонус: Вы всегда можете повеселиться с этим, особенно учитывая ограничения на большинство подсветки синтаксиса.В следующий раз, если у вас есть секунда, попробуйте запустить этот код:

public class FalseIsTrue {
    public static void main(String[] args) {
        if ( false == true ) { //these characters are magic: \u000a\u007d\u007b
            System.out.println("false is true!");
        }
    }
}
1 голос
/ 20 апреля 2016

Поскольку он находится в диапазоне Управляющие символы Unicode

Что составляет U+0000–U+001F и U+007F.

Управляющие символы Unicode используются для управления интерпретацией или отображение текста, но сами эти символы не имеют визуального или пространственное представление.

Их можно избежать с помощью \, как описано выше в ответе @ Mark

ОТ RFC :

* * 2,5 тысячи двадцать-одны. Строки

Представление строк аналогично соглашениям, используемым в C семейство языков программирования. строка начинается и заканчивается цитатой Метки. Все символы Unicode могут быть помещается в кавычки за исключением символов, которые должны быть экранированный: кавычка, обратный солидус и управляющие символы (От U + 0000 до U + 001F).

Любой символ может экранироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...