Як зазначається в інших відповідях, ваш код працює не в першу чергу, оскільки 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+", " ");