他の回答で述べたように、ターゲットが変更されないため、コードは主に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", " ");
各行末記号をスペースに置き換えます。Java 8以降、これも実行できます。
// #5
text = text.replaceAll("\\R", " ");
また、複数の行区切りを1つのスペースに置き換える場合は、次のようにします。
// #6
text = text.replaceAll("\\R+", " ");