如何从Java文件中删除换行符?

我该如何从Java中的字符串中替换所有换行符,以便在Windows和Linux上运行(即没有OS特定的回车/换行/换行等问题)?

我试过了(注意readFileAsString是一个将文本文件读入字符串的函数):

String text = readFileAsString("textfile.txt");
text.replace("n", "");

但这似乎并不奏效。

如何才能做到这一点?


您需要将text设置为text.replace()的结果:

String text = readFileAsString("textfile.txt");
text = text.replace("n", "").replace("r", "");

这是必要的,因为字符串是不可变的 - 调用replace并不会改变原始字符串,它会返回一个已经改变的新字符串。 如果您没有将结果分配给text ,那么新的字符串会丢失并收集垃圾。

至于为任何环境获取换行符String - 通过调用System.getProperty("line.separator")可用。


正如在其他答案中指出的,你的代码不起作用,主要是因为String.replace(...)不改变目标字符串。 (它不能 - Java字符串是不可变的!)它实际上做的是创建一个新的字符串,并根据需要更改字符。 但是你的代码会抛弃那个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("rn|r|n", " ");

它用一个空格替换每个行结束符。


如果只想删除当前操作系统上有效的行结束符,则可以这样做:

text = text.replaceAll(System.getProperty("line.separator"), "");

如果你想确保你删除了任何行分隔符,你可以这样做:

text = text.replaceAll("r|n", "");

或者稍微冗长些,但少一些正则性:

text = text.replaceAll("r", "").replaceAll("n", "");
链接地址: http://www.djcxy.com/p/96055.html

上一篇: How to remove line breaks from a file in Java?

下一篇: Flask SQLAlchemy Data Mapper vs Active Record Pattern