linux下如何替换不可见的回车换行字符

一个字符串里有换行符(不是\n),比如:

1234
5678
9000

我想把这个换行符替换成另外一个字符串("")得到字符串 "123456789000",在windows下是用 str.replaceAll("\r\n", "") 可以实现, 请问在linux下用java怎么实现啊?

[code="java"]str.replaceAll("\r", "").replaceAll("\n", "");[/code]

这样写就windows和linux通用了。

简单的方法:
StringBuffer buf = new StringBuffer();

BufferedReader br = new BufferedReader(new FileReader("文件名"));

while ((line = br.readLine()) != null) {
buf.append(line.trim());
}

// 你要的字符串
System.out.println(buf.toString());

[code="java"]str.replaceAll("\n", "")[/code]
linux的换行符只有 \n 。

你题的意思应该是如何获取这个不可见的字符是什么吧。
是文件的话,可以hexdump看一下,
如果不是你就直接用java来取
str.getBytes,然后看一下第五个字节是什么,再替换。

只要字符串一样,那么跟windows和linux没关系,处理方式一样str.replaceAll("\r\n", "")

linux不是'\n'么?没遇到过。不过我推荐你可以把每个char的byte打印出来,看看到底是什么,然后再进行replace。

[quote]只要字符串一样,那么跟windows和linux没关系,处理方式一样str.replaceAll("\r\n", "")[/quote]

想替换linux上的文本文件的换行,就是和替换windows上的文本文件的换行不一样。

[code="java"]
public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
    String str = "1234 \n\r\t\t\r\t   \n5678";
    System.out.println(str.replaceAll("\\s+", ""));
}

}
[/code]

[quote]想替换linux上的文本文件的换行,就是和替换windows上的文本文件的换行不一样。[/quote]

注意,楼主是说“字符串”,我也是说“字符串”,我还没说"文件"

replaceAll 和 replace 是不同的阿

replace是regex replace是 string

\r\n要变成 \r\n啊

以上的解答,含有replaceAll的都错了

[quote]注意,楼主是说“字符串”,我也是说“字符串”,我还没说"文件"[/quote]

楼主之所以会问“在linux下用java怎么实现”,那是因为他在linux上遇到问题了,那就能得出楼主说的是“文件里的字符串”。

[quote]replaceAll 和 replace 是不同的阿

replace是regex replace是 string

\r\n要变成 \r\n啊

以上的解答,含有replaceAll的都错了[/quote]

试过才好说。
[code="java"]System.out.println("a\r\n\nb");
System.out.println("a\r\n\nb".replaceAll("\r", "").replaceAll("\n", ""));[/code]

  linux和unix系统的换行是"\n",而windows的换行并不是直接的"n",是"\r\n"。所以out.write("\n")只能得到一个黑框,因为windos不认为这是个“换行”。 直接从记事本输入的话,windows自动输入了"\r\n",所以从从文本文件中读出来的也是"\r\n",可以正常显示。

  那么这是为什么呢?稍微学过正则表达式的朋友都知道:\r是回车符,而\n是换行符。Windows默认\n在文档中显示的是一个空格或者小黑框。所以,要先回车,再换行。

[quote]是的,是文件里的字符串,大哥,帮忙啊[/quote]

3 楼已经回答了。
[code="java"]str.replaceAll("\r", "").replaceAll("\n", ""); [/code]

[code="java"]
str.replaceAll("\r", "").replaceAll("\n", "");

[/code]

windows下是用 str.replaceAll("\r\n", "") 可以实现

那么 linux 下用 str.replaceAll("\r", "").replaceAll("\n", ""); 就能实现。

[code="java"]System.out.println("a\r\n\nb");

System.out.println("a\r\n\nb".replaceAll("\r", "").replaceAll("\n", ""));[/code]

如果说不行,那是其他的问题。 你可以把整个相关代码贴出来看看。

如果你想剔除 CR LF

[code="java"]str=str.replace("\r","").replace("\n","");[/code]

或者

[code="java"]str.replaceAll("\r", "").replaceAll("\n", ""); [/code]

这个事情我也不想和你争

str.replaceAll(System.getProperty("line.separator"),"")

试试上面的可以不