一个字符串里有换行符(不是\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"),"")
试试上面的可以不