我从一个文件中读入一行字符:“skdj\njfie”,为什么输出这行文字的时候没有换行,如果我直接输出这行文字:System.out.println(“skdj\njfie”)就有换行,这是为什么?
解决方案 »
- 请各位高手指教!!
- java: 如何实现TextArea的自动换行?
- PrintWriter和FileWriter在文件写入时有什么区别
- 我写的线程小程序,可是发现线程内的Run()方法内的代码并没有执行,请高手指点。
- 将来要做Java工程师?我现在应该有哪些知识?
- 请问在.NET中不在支持JAVA了吗,.net里的VJ#是不是java的平台?
- 求sun microsystem 系列丛书的 java 核心(第二版)附带的源代码
- 请教画曲线的问题帮忙看看这样行不行
- JNI的问题
- 我装了jdk1.3,怎么在dos里总是出现这个错误呢?
- java运算符
- 有什么好方法可以测试java应用是否内存泄露?
如:
...
skdj
jfie
...
fileContext.replaceAll("\\n", "\n");
System.out.println(fileContext);
fileContext.replaceAll("\\n", "\n");
System.out.println(fileContext);
====================================================
to: zqrqq
你这样写是不对的,应该改成:String fileContext=读出的文件内容
fileContext = fileContext.replaceAll("\\\\n", "\n");
System.out.println(fileContext);
你试验过没有?!
读取文件里的\,没有任何变化
但是,因为replaceAll()的第一个参数是一个政则表达式,为了替换\n,正则表达式应该是\n,但是在正则表达式里面,\是特殊字符,需要转义,所以应该是\\n;但是,在java字符里面\也是特殊字符;所以,需要再次转义,所以就是\\\\n
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)
这是为什么?