Java Сканер укажите разделитель строк - PullRequest
0 голосов
/ 27 мая 2020

Я использую Scanner класс в Java для операций ввода-вывода. Я хочу прочитать каждую строку в файле, которая заканчивается на «\ n \ r | [\ r \ n]», за исключением другого разделителя, который также может означать разделитель строк, например «[\ u2028 \ 2029 \ 0085]» . Если я использую Scanner.nextLine(), эти разделители Unicode будут включены, если я не изменю исходный код Scanner. Если я использую Scanner.next("some pattern"), пустая строка будет проигнорирована, чего я не ожидал. Есть какой-нибудь правильный способ сделать это? Спасибо.

1 Ответ

0 голосов
/ 27 мая 2020

Сканер не позволяет переопределить шаблон, который он использует для окончаний строк.

Однако вы можете добиться подобного примерно такого:

String line = scanner.next("[\R
\u2028\u2029\u0085]");

и использовать вместо него scanner.hasNext("[\R\u2028\u2029\u0085]") из scanner.hasNextLine().

Примечание. \R был введен в версии 8 и означает любой вариант последовательности символов «конца строки» (ie \r\n, \n или \r, который работает для windows, * nix и ma c)

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