line.separator不替换\ n

时间:2014-06-13 04:58:45

标签: java cross-platform newline

假设我有一个TextArea供用户输入。它是多线的。

所以,我将以下文字写入其中。

  

"测试线
   和线和
   线"

嗯,这里需要提醒一下。要设置行分隔符,用户只需按 Enter 。现在,我想用" "替换输入文本中的所有行分隔符。我希望输出为

  

"!!!测试线和线与线"

为此,我使用了以下代码。

System.out.println(getText().replace(System.getProperty("line.separator"), "!"));

但是,输出与输入文本相同。但是,如果我用

替换上面的代码
System.out.println(getText().replace("\n", "!"));

输出结果与预期一致。

将此视为独立于操作系统。我在Windows XP下对此进行了测试。

如何将 \ n 替换为能够在不同操作系统中运行的内容。它应该是 System.getProperty(" line.separator")但我不明白为什么它在这里不起作用。

感谢。

1 个答案:

答案 0 :(得分:3)

JTextArea(或JTextPane)的Document始终将换行符存储为“\ n”。因此,使用JTextArea时,以下代码适用于所有平台:

System.out.println(getText().replace("\n", "!"));

但是,如果您使用textArea.write(...)方法,则“\ n”将替换为您平台的“line.separator”。

查看Text and New Lines,它会尝试更详细地解释此行为。