求高手点拨一个java“截取字符串”的问题。
我的程序需要从下面的txt文件中读取数据:
(图一)
这里的“读取数据”的工作,我交给了下面的这个类型:
package s_port_package_BeiJing;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ReadTxt {
static String MyKey = "CJCO008";
static ArrayList<String> logData = new ArrayList<String>();
static String text = null;
public static void read(String filePath) {
try {
FileReader input = new FileReader(filePath);
BufferedReader br = new BufferedReader(input);
while (( text = br.readLine()) != null) {
logData.add(text);
}
br.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
经过程序的调试,我得到:
图一中的数据,每一笔数据的末尾,都多出了一个“不可见字符”:我初步的判断是“换行符”.
于是,我进行了:
1.采用substring(0,String.length());方法的随后书写.
2.采用String.replace("\n","");方法的随后书写.
来进行上述读取到的数据的“后续换行符”的裁剪。
但是,均未能够达到目的。
希望得到高手的点拨:
我的程序,需要怎么书写,能够将上面的需求达到?
谢谢高手!!
------解决方案--------------------你的数据读完后做什么用的?是又输出到文件里面出现那个问题么?
我用你代码测试输出到文件、控制台都没有问题。
------解决方案--------------------下载一个winhex
http://x-ways.net/winhex/
查看一下txt文件每行结尾时的转行符
估计是0D0A
也就是CR+LF在Windows下就是\r\n
解决办法1
把String.replace("\n","");
改为String.replace("\r\n","");
缺点:在Unix或者MAC上就不能正确运行了
解决办法2
把String.replace("\n","");
改为String.replace("%n","");
JAVA中不依赖于操作系统平台的换行符的写法是%n
------解决方案--------------------用UE看下16进制就知道结尾是什么了