日期:2014-05-20  浏览次数:20761 次

求高手点拨一个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进制就知道结尾是什么了