我如何替换所有的换行符从一个字符串在Java在这样的方式,将工作在Windows和Linux(即没有具体的操作系统的回车/换行/新行等问题)?

我尝试过(注意readFileAsString是一个将文本文件读入String的函数):

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

但这似乎并不奏效。

如何做到这一点呢?


当前回答

供参考,如果你想用单行换行代替同时的多换行,那么你可以使用

myString.trim().replaceAll("[\n]{2,}", "\n")

或替换为单个空格

myString.trim().replaceAll("[\n]{2,}", " ")

其他回答

供参考,如果你想用单行换行代替同时的多换行,那么你可以使用

myString.trim().replaceAll("[\n]{2,}", "\n")

或替换为单个空格

myString.trim().replaceAll("[\n]{2,}", " ")

换行符在windows/linux/mac下是不一样的。你应该使用系统。使用属性line.separator获取properties。

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

.replace返回一个新字符串,Java中的字符串是不可变的。

您可以使用apache公共IOUtils遍历该行并将每行附加到StringBuilder。不要忘记关闭InputStream

StringBuilder sb = new StringBuilder();
FileInputStream fin=new FileInputStream("textfile.txt");
LineIterator lt=IOUtils.lineIterator(fin, "utf-8");
while(lt.hasNext())
{
  sb.append(lt.nextLine());
}
String text = sb.toString();
IOUtils.closeQuitely(fin);
str = str.replaceAll("\\r\\n|\\r|\\n", " ");

在搜索了很多之后,完美地为我工作,在其他每一行都失败了。