Như đã lưu ý trong các câu trả lời khác, mã của bạn không hoạt động chủ yếu vì String.replace(...)
không thay đổi mục tiêuString
. (Không thể - Chuỗi Java là bất biến!) Điều replace
thực sự làm là tạo và trả về một String
đối tượng mới với các ký tự được thay đổi theo yêu cầu. Nhưng mã của bạn sau đó ném đi rằng String
...
Dưới đây là một số giải pháp có thể. Cái nào đúng nhất phụ thuộc vào chính xác những gì bạn đang cố gắng làm.
// #1
text = text.replace("\n", "");
Đơn giản chỉ cần loại bỏ tất cả các ký tự dòng mới. Điều này không đối phó với việc chấm dứt dòng Windows hoặc Mac.
// #2
text = text.replace(System.getProperty("line.separator"), "");
Loại bỏ tất cả các đầu cuối dòng cho nền tảng hiện tại. Điều này không đối phó với trường hợp bạn đang cố xử lý (ví dụ) một tệp UNIX trên Windows hoặc ngược lại.
// #3
text = text.replaceAll("\\r|\\n", "");
Loại bỏ tất cả các đầu cuối dòng Windows, UNIX hoặc Mac. Tuy nhiên, nếu tệp đầu vào là văn bản, điều này sẽ ghép các từ; ví dụ
Goodbye cruel
world.
trở thành
Goodbye cruelworld.
Vì vậy, bạn thực sự có thể muốn làm điều này:
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
trong đó thay thế mỗi dòng kết thúc bằng một khoảng trắng. Vì Java 8, bạn cũng có thể làm điều này:
// #5
text = text.replaceAll("\\R", " ");
Và nếu bạn muốn thay thế nhiều dấu phân cách dòng bằng một khoảng trắng:
// #6
text = text.replaceAll("\\R+", " ");