他の回答に記載されているように、主String.replace(...)
にターゲットを変更しないため、コードは機能していませんString
。(できません-Java文字列は不変です!)実際に行うことは、必要に応じて文字が変更された新しいオブジェクトreplace
を作成して返すことです。String
しかし、あなたのコードはそれを捨てますString
...
考えられる解決策は次のとおりです。どちらが最も正しいかは、正確に何をしようとしているかによって異なります。
// #1
text = text.replace("\n", "");
すべての改行文字を削除するだけです。これは、WindowsまたはMacの回線終了には対応していません。
// #2
text = text.replace(System.getProperty("line.separator"), "");
現在のプラットフォームのすべてのラインターミネータを削除します。これは、(たとえば)WindowsでUNIXファイルを処理しようとしている場合、またはその逆の場合には対応していません。
// #3
text = text.replaceAll("\\r|\\n", "");
すべてのWindows、UNIX、またはMacのラインターミネータを削除します。ただし、入力ファイルがテキストの場合、これは単語を連結します。例えば
Goodbye cruel
world.
になります
Goodbye cruelworld.
したがって、実際にこれを実行することをお勧めします。
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
これは、各ラインターミネータをスペース1に置き換えます。Java 8以降、これも実行できます。
// #5
text = text.replaceAll("\\R", " ");
また、複数行のターミネータを1つのスペースに置き換えたい場合:
// #6
text = text.replaceAll("\\R+", " ");
1-#3と#4の間には微妙な違いがあることに注意してください。シーケンス\r\n
は単一の(Windows)ラインターミネータを表すため、2つのスペースに置き換えないように注意する必要があります。