Come notato in altre risposte, il codice non funziona principalmente perché String.replace(...)
non cambia la destinazione String
. (Non può - le stringhe Java sono immutabili!) Ciò che replace
effettivamente fa è creare e restituire un nuovo String
oggetto con i caratteri modificati come richiesto. Ma il tuo codice quindi butta via quel String
...
Ecco alcune possibili soluzioni. Qual è il più corretto dipende da cosa stai esattamente cercando di fare.
// #1
text = text.replace("\n", "");
Rimuove semplicemente tutti i caratteri di nuova riga. Questo non fa fronte alle terminazioni di linea di Windows o Mac.
// #2
text = text.replace(System.getProperty("line.separator"), "");
Rimuove tutti i terminatori di linea per la piattaforma corrente. Ciò non risolve il caso in cui si sta tentando di elaborare (ad esempio) un file UNIX su Windows o viceversa.
// #3
text = text.replaceAll("\\r|\\n", "");
Rimuove tutti i terminatori di linea Windows, UNIX o Mac. Tuttavia, se il file di input è testo, questo concatena le parole; per esempio
Goodbye cruel
world.
diventa
Goodbye cruelworld.
Quindi potresti effettivamente voler fare questo:
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
che sostituisce ogni terminatore di riga con uno spazio. Da Java 8 puoi anche fare questo:
// #5
text = text.replaceAll("\\R", " ");
E se vuoi sostituire più separatori di riga con uno spazio:
// #6
text = text.replaceAll("\\R+", " ");