В JDK11
класс String
имеет метод lines()
:
Возвращает поток строк, извлеченных из этой строки, разделенных
ограничители строки.
Далее в документации говорится:
Терминатор строки может быть одним из следующих: символ перевода строки "\ n"
(U + 000A), символ возврата каретки "\ r" (U + 000D) или каретка
Возврат, за которым сразу следует перевод строки "\ r \ n" (U + 000D U + 000A).
строка представляет собой последовательность из нуля или более символов, за которыми следует
терминатор строки, или это последовательность из одного или нескольких символов
с последующим концом строки. Строка не включает в себя строку
терминатор.
С этим можно просто сделать:
Stream<String> stream = str.lines();
тогда, если вы хотите массив:
String[] array = str.lines().toArray(String[]::new);
Учитывая, что этот метод возвращает Stream, он открывает множество вариантов для вас, поскольку он позволяет написать сжатый и декларативное выражение возможных параллельных операций.