我从一个文件中读入一行字符:“skdj\njfie”,为什么输出这行文字的时候没有换行,如果我直接输出这行文字:System.out.println(“skdj\njfie”)就有换行,这是为什么?

解决方案 »

  1.   

    System.out.println(“skdj\njfie”)中的\n是换行符号的字符串表示,毕竟你无法在文本编辑时描述一个换行,否则编译器也不知道你要干什么!文件中读入一行字符:“skdj\njfie”,机器人文\n是普通的字符,所以就按普通的方式输出了。希望输出换行,方法很简单,直接在文件里换行就可以了
    如:
    ...
    skdj
    jfie
    ...
      

  2.   

    String fileContext=读出的文件内容
    fileContext.replaceAll("\\n", "\n");
    System.out.println(fileContext);
      

  3.   

    回复人:zqrqq(zqrain(结帖是一种美德)) ( 五级(中级)) 信誉:105  2007-06-22 11:00:38  得分:0String fileContext=读出的文件内容
    fileContext.replaceAll("\\n", "\n");
    System.out.println(fileContext);
    ====================================================
    to: zqrqq
    你这样写是不对的,应该改成:String fileContext=读出的文件内容
    fileContext = fileContext.replaceAll("\\\\n", "\n");
    System.out.println(fileContext);
      

  4.   

    因为在读取字符串里的“\”,在JVM中被转义成了“\\”,所以输出的是“\n”而不是换行(估计就是这么回事,未经考证),当然要对它进行匹配时,也要转义成“\\”,所以就用“\\\\”(哇~~好多斜杠)。
      

  5.   

    to:youhaodeyi(友好的翼) 
    你试验过没有?!
      

  6.   

    对不起,看错了我来解释一下:是"\\\\n",而不是"\\n"
    读取文件里的\,没有任何变化
    但是,因为replaceAll()的第一个参数是一个政则表达式,为了替换\n,正则表达式应该是\n,但是在正则表达式里面,\是特殊字符,需要转义,所以应该是\\n;但是,在java字符里面\也是特殊字符;所以,需要再次转义,所以就是\\\\n
      

  7.   

    不是呀,如果程序这么写:
    line.replaceAll("\\\\\\\\","\\");会产生运行时错误:
    java.lang.StringIndexOutOfBoundsException: String index out of range: 1
            at java.lang.String.charAt(String.java:444)
            at java.util.regex.Matcher.appendReplacement(Matcher.java:551)
            at java.util.regex.Matcher.replaceAll(Matcher.java:661)
            at java.lang.String.replaceAll(String.java:1663)
            at test.main(test.java:10)
    这是为什么?