Как отмечено в других ответах, ваш код не работает в первую очередь потому, String.replace(...)
что не меняет цель String
. (Это невозможно - строки Java являются неизменяемыми!) Что на replace
самом деле делает, так это создает и возвращает новый String
объект с измененными символами по мере необходимости. Но ваш код затем выбрасывает это String
...
Вот несколько возможных решений. Какой из них наиболее правильный, зависит от того, что именно вы пытаетесь сделать.
// #1
text = text.replace("\n", "");
Просто удаляет все символы новой строки. Это не справляется с завершением строки Windows или Mac.
// #2
text = text.replace(System.getProperty("line.separator"), "");
Удаляет все ограничители строки для текущей платформы. Это не относится к случаю, когда вы пытаетесь обработать (например) файл UNIX в Windows или наоборот.
// #3
text = text.replaceAll("\\r|\\n", "");
Удаляет все разделители строк в Windows, UNIX или Mac. Однако, если входной файл является текстом, это объединит слова; например
Goodbye cruel
world.
становится
Goodbye cruelworld.
Таким образом, вы можете сделать это:
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
который заменяет каждый терминатор строки пробелом. Начиная с Java 8 вы также можете сделать это:
// #5
text = text.replaceAll("\\R", " ");
И если вы хотите заменить несколько разделителей строк одним пробелом:
// #6
text = text.replaceAll("\\R+", " ");