Jak zauważono w innych odpowiedziach, twój kod nie działa przede wszystkim dlatego, String.replace(...)
że nie zmienia celu String
. (Nie może - ciągi Java są niezmienne!) W replace
rzeczywistości polega na utworzeniu i zwróceniu nowego String
obiektu ze zmienionymi znakami zgodnie z wymaganiami. Ale twój kod wyrzuca to String
...
Oto kilka możliwych rozwiązań. To, który jest najbardziej poprawny, zależy od tego, co dokładnie próbujesz zrobić.
// #1
text = text.replace("\n", "");
Po prostu usuwa wszystkie znaki nowej linii. Nie radzi sobie z zakończeniami linii w systemie Windows lub Mac.
// #2
text = text.replace(System.getProperty("line.separator"), "");
Usuwa wszystkie terminatory linii dla bieżącej platformy. Nie dotyczy to przypadku, gdy próbujesz przetworzyć (na przykład) plik UNIX w systemie Windows lub odwrotnie.
// #3
text = text.replaceAll("\\r|\\n", "");
Usuwa wszystkie terminatory linii w systemie Windows, UNIX lub Mac. Jeśli jednak plik wejściowy to tekst, spowoduje to konkatenację słów; na przykład
Goodbye cruel
world.
staje się
Goodbye cruelworld.
Więc możesz chcieć to zrobić:
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
który zastępuje każde zakończenie linii spacją. Od wersji Java 8 możesz to również zrobić:
// #5
text = text.replaceAll("\\R", " ");
A jeśli chcesz zastąpić wiele separatorów linii jedną spacją:
// #6
text = text.replaceAll("\\R+", " ");