Как я могу отсканировать текст, введенный пользователем, имеющий в себе "\n" в java

Пишу небольшой консольный анализатор текста. Когда пользователь вводит текст, имеющий перенос строки, происходит ошибка (в переменную входит только первая строка, которая была до переноса).

Все мои попытки по типу этой:

System.out.println("enter your text");
Scanner sc = new Scanner(System.in);
String message = sc.nextLine().replaceAll("\n", " ");

были тщетны. Как это можно реализовать?


Ответы (2 шт):

Автор решения: grav

Вообще, чтение текста лучше производить в цикле:

while (sc.hasNextLine()) {
    message = sc.nextLine();
}
→ Ссылка
Автор решения: Alex Rudenko

Можно изменить делимитер в сканере и вычитывать строки, используя Scanner::next.

Например, установив в качестве делимитера двойной перевод строки, можно вычитывать текст, содержащий \n:

Scanner sc = new Scanner(System.in).useDelimiter("\n\n");

List<String> list = new ArrayList<>();
while (true) {
    String line = sc.next();
    list.add(line);
    if ("q".equalsIgnoreCase(line)) {
        break;
    }
}

list.stream().map(s -> "[" + s + "]").forEach(System.out::println);

Пример ввода-вывода:

sss
www
ddd

111
222

q

Вывод списка, строки содержат \n

[sss
www
ddd]
[111
222]
[q]
→ Ссылка