Как я могу отсканировать текст, введенный пользователем, имеющий в себе "\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]