我如何替换所有的换行符从一个字符串在Java在这样的方式,将工作在Windows和Linux(即没有具体的操作系统的回车/换行/新行等问题)?
我尝试过(注意readFileAsString是一个将文本文件读入String的函数):
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
但这似乎并不奏效。
如何做到这一点呢?
我如何替换所有的换行符从一个字符串在Java在这样的方式,将工作在Windows和Linux(即没有具体的操作系统的回车/换行/新行等问题)?
我尝试过(注意readFileAsString是一个将文本文件读入String的函数):
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
但这似乎并不奏效。
如何做到这一点呢?
当前回答
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
在搜索了很多之后,完美地为我工作,在其他每一行都失败了。
其他回答
供参考,如果你想用单行换行代替同时的多换行,那么你可以使用
myString.trim().replaceAll("[\n]{2,}", "\n")
或替换为单个空格
myString.trim().replaceAll("[\n]{2,}", " ")
如果你只想删除当前操作系统上有效的行结束符,你可以这样做:
text = text.replaceAll(System.getProperty("line.separator"), "");
如果你想确保你删除了任何行分隔符,你可以这样做:
text = text.replaceAll("\\r|\\n", "");
或者,稍微啰嗦一点,但不那么regexy:
text = text.replaceAll("\\r", "").replaceAll("\\n", "");
你需要将text设置为text.replace()的结果:
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");
这是必要的,因为字符串是不可变的——调用replace并不会改变原始的字符串,它会返回一个被改变的新字符串。如果不将结果赋值给文本,那么新的String将丢失并被垃圾收集。
至于为任何环境获取换行字符串——可以通过调用System.getProperty("line.separator")来获得。
String text = readFileAsString("textfile.txt").replaceAll("\n", "");
尽管在oracle网站中trim()的定义是 返回字符串的副本,省略前导和尾随空格。
文档没有说明新的行字符(前导和后尾)也将被删除。
简而言之 字符串文本= readFileAsString("textfile.txt").trim();对你也有用。 (用java6核对)
我发现奇怪的是(Apache) StringUtils还没有在这里被覆盖。
您可以使用.replace方法从字符串中删除所有换行符(或任何其他出现的子字符串)
StringUtils.replace(myString, "\n", "");
这一行将用空字符串替换所有换行符。
因为换行符在技术上是一个字符,你可以选择使用. replacecars方法来替换字符
StringUtils.replaceChars(myString, '\n', '');