2

我正在编写代码来替换字符串中的换行符。在 Windows 上,当我使用

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

这工作正常,但在 UNIX 中失败。

我应该在 UNIX 中使用什么?

4

2 回答 2

1

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

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

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

String myStr = "abc\ndef";
myStr = myStr.replaceAll(/* params */);
于 2012-07-12T05:35:55.103 回答
0

接收到的文本可能包含 windows 行分隔符,因此仅替换\n字符没有效果。

如果您不知道文本的来源(或文本包含混合行分隔符),以下方法可以提供帮助。首先将windows和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());
于 2015-05-25T04:07:51.903 回答