在UNIX中替换换行符

时间:2012-07-12 05:32:48

标签: java windows unix newline

我正在创建一个代码来替换字符串中的换行符。在Windows上,当我使用

String.replaceAll(System.getProperty("line.separator"), "\\n");

这很好用,但在UNIX中失败了。

我应该在UNIX中使用什么?

2 个答案:

答案 0 :(得分:1)

\n对于Unix是正确的。 Windows使用\r\n,Mac使用\r IIRC。

问题可能在于Java作为一种多平台语言,会自动用系统的分隔符替换\n。我不知道Java,但我认为是这种情况。

编辑:如果您发布的代码是您正在使用的代码,我认为我看到了问题。 String是一个班级。它在Java中也是不可变的。它应该是这样的:

String myStr = "abc\ndef";
myStr = myStr.replaceAll(/* params */);

答案 1 :(得分:0)

收到的文本可能包含windows行分隔符,因此只替换\n字符无效。

如果您不知道文本的来源(或文本包含行分隔符的混合),以下方法可以提供帮助。首先将窗口和mac行分隔符转换为unix分隔符,然后将unix分隔符转换为系统分隔符。

final String DOS = "\r\n", NIX = "\n", MAC = "\r";
String converted = original.replace(DOS, NIX)
                           .replace(MAC, NIX)
                           .replace(NIX, System.lineSeparator());