Hi,
txt中的一行
123  ABC   12345 123456ED 中间的空格数不一样。
我想读取这一行中的每个值String [] str_list = line.split(" ");这样的话它就会以一个空格为分隔符来处理
如何才能使它与空格的数量无关?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【cookies1st】截止到2008-07-24 14:50:03的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:0.00  %               结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   


    public class Main {    public static void main(String[] args) {
            String s="123  ABC  12345 123456ED ";
            s=s.replaceAll("[ ]+", " ");//将多个空格替换为一个空格
            String result[]=s.split(" ");
            for(String temp:result){
                System.out.println(temp);
            }
        }
    }
      

  3.   


    Matcher m = Pattern.compile("  +").matcher(line);;
    if(m.find()) {
      m.replaceAll(" ");
    }如果匹配2个或2个以上的空格就替换成一个空格
      

  4.   

    为什么出错了?
    源文件
    -30.000   10.000    0.000    0.000 0A0000FFFF0801000065FFFFFFFF0000 R1                 
     -34.000   12.000    0.000   90.000 0A0000FFFF0801000102FFFFFFFF0000 R2                 
     -38.000   14.000    0.000   90.000 0A0000FFFF0801000203FFFFFFFF0000 R3                 
     -42.000   16.000    0.000  -90.000 0A0000FFFF0801000300FFFFFFFF0000 R4                 
     -44.000   18.000    0.000  180.000 0A0000FFFF0801000067FFFFFFFF0001 C1                 
     -50.000   20.000    0.000    0.000 0A0000FFFF0801000101FFFFFFFF0001 C2                 
     -54.000   22.000    0.000  270.000 0A0000FFFF0801000200FFFFFFFF0001 C3                 
     -58.000   24.000    0.000   90.000 0A0000FFFF0801000302FFFFFFFF0001 C4期望的结果:
     -30.000   10.000    0.000  R1                 
     -34.000   12.000   90.000  R2                 
     -38.000   14.000   90.000  R3                 
     -42.000   16.000  -90.000  R4                 
     -44.000   18.000  180.000  C1                 
     -50.000   20.000    0.000  C2                 
     -54.000   22.000  270.000  C3                 
     -58.000   24.000   90.000  C4Code:while((line = br.readLine())!= null){
             //line = br.readLine().replaceAll("[ ]+", " ");
             String temp = br.readLine().replaceAll("[ ]+", " ");
             String [] str_list = temp.split(" ");
             
             for(int i=0; i<str_list.length; i++){
               System.out.println(str_list[i]);
              
              }  
            }代码哪里有问题噢~?
      

  5.   

    出什么错了?
    为什么每次要readLine()两遍?
      

  6.   

    你的结果应该是这样子的:
    -30.000
    10.000
    0.000
    R1
    -34.000
    ...
    注意print() 和println()的区别
      

  7.   

    OK了把它改成
     str_list = line.replaceAll("[ ]+", " ").split(" ");
      

  8.   

    不错的方法
    s=s.replaceAll("[ ]+", " ");//将多个空格替换为一个空格
      

  9.   

    while((line = br.readLine())!= null){
          str_list = line.replaceAll("[ ]+", " ").split(" ");
          String [] str_list = temp.split(" ");
         
          System.out.println(str_list[1]+" "+str_list[2]+" "+str_list[4]+" "+str_list[6]+"\n");
        }