zhangpeng618
2011-01-06 13:12 阅读 623
已采纳

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

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

1234
5678
9000

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

18条回答 默认 最新

  • 已采纳
    lang_shao lang_shao 2011-01-06 13:28

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

    这样写就windows和linux通用了。

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 13:26

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

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

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

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

    点赞 评论 复制链接分享
  • lang_shao lang_shao 2011-01-06 13:26

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

    点赞 评论 复制链接分享
  • iteye_16168 iteye_16168 2011-01-06 13:28

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

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 13:28

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

    点赞 评论 复制链接分享
  • ethenjean ethenjean 2011-01-06 13:30

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

    点赞 评论 复制链接分享
  • lang_shao lang_shao 2011-01-06 13:31

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

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

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 13:32

    [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]

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 13:33

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

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

    点赞 评论 复制链接分享
  • beneo beneo 2011-01-06 13:36

    replaceAll 和 replace 是不同的阿

    replace是regex replace是 string

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

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

    点赞 评论 复制链接分享
  • lang_shao lang_shao 2011-01-06 13:38

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

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

    点赞 评论 复制链接分享
  • lang_shao lang_shao 2011-01-06 13:41

    [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]

    点赞 评论 复制链接分享
  • zhanjia 二进制之路 2011-01-06 13:43
      linux和unix系统的换行是"\n",而windows的换行并不是直接的"n",是"\r\n"。所以out.write("\n")只能得到一个黑框,因为windos不认为这是个“换行”。 直接从记事本输入的话,windows自动输入了"\r\n",所以从从文本文件中读出来的也是"\r\n",可以正常显示。
    
      那么这是为什么呢?稍微学过正则表达式的朋友都知道:\r是回车符,而\n是换行符。Windows默认\n在文档中显示的是一个空格或者小黑框。所以,要先回车,再换行。
    
    点赞 评论 复制链接分享
  • lang_shao lang_shao 2011-01-06 13:46

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

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

    点赞 评论 复制链接分享
  • beneo beneo 2011-01-06 13:54

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

    [/code]

    点赞 评论 复制链接分享
  • lang_shao lang_shao 2011-01-06 13:56

    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]

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

    点赞 评论 复制链接分享
  • beneo beneo 2011-01-06 14:04

    如果你想剔除 CR LF

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

    或者

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

    这个事情我也不想和你争

    点赞 评论 复制链接分享
  • enet_java enet_java 2011-01-06 15:10

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

    试试上面的可以不

    点赞 评论 复制链接分享

相关推荐