如何从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