System.lineSeparator()在Windows上无法正常工作

时间:2013-07-31 20:51:36

标签: java cross-platform newline java-7

我有一个方法,它接受一个字符串作为输入,并从中取出所有空格和换行符。为了实现这一点,我使用了java库中的以下方法:

public String clean(String s) {
    return s.replaceAll(System.lineSeparator(),"").replaceAll(" ","");
}

这在Linux下工作正常,但是当涉及到Windows时,它无法删除行分隔符,因为字符串包含它们。

有什么我想念的吗?我知道在基于Unix的系统中,换行符是/ n,我不知道它在Windows中可能是什么,但正如java文档所述,System.lineSeparator()方法应提供与平台无关的行分隔符。

2 个答案:

答案 0 :(得分:7)

我建议您在删除空格时尝试此操作

public static String clean(String s) {
    return s.replaceAll("\\s+", "");
}

我怀疑你遇到的问题是你正在读取linux盒子上写在windows上的文件。您的代码不会删除Windows上的额外\r

答案 1 :(得分:1)

尝试替换所有\n以及\r\n。是的,lineSeparator应该已经处理好了,但也许没有。