问题:
一个字符串如下:
a=1 ;b=2 ;c=5 ;a=7 ;b=8 ;c=67 ;a=3 ;b=9 ;c=7 ;从a=* ;到c=* ;结尾为一条记录(即这样的一行表示一条记录,每行以"\r\n"结尾,"\r\n"是指回车符与 换行符),这里只列举出了三条记录,实际上记录条数是不确定的,我现在需要将每条记录分离出来,然后再分别对其中每条记录的字段做处理,请教高手怎么来分离每条记录?

解决方案 »

  1.   

    String s="a=1 ;b=2 ;c=5 ;\r\na=7 ;b=8 ;c=67 ;\r\na=3 ;b=9 ;c=7 ;\r\n";
    String[] str=s.split("\r\n");
    for(int i=0;i<str.length;i++)
    {
    System.out.println(str[i]);
    }
    以上代码为将每条记录分离出来
      

  2.   

    xiaohuasz() 兄:
      如果这样解析出来放到了String[] str里,那我怎样才能得到每个变量的值,比如这里的a,b,c
      

  3.   

    public class TestSplit
    {
        public TestSplit ()
        {
        }
        public static void main ( String[] args )
        {
            String s = "a=1 ;b=2 ;c=5 ;\r\na=7 ;b=8 ;c=67 ;\r\na=3 ;b=9 ;c=7 ;" ;
            String[] str = s.split ( "\r\n" ) ;
            for ( int i = 0 ; i < str.length ; i++ )
            {
                String a = str[ i ].split ( ";" )[ 0 ].trim ().substring(2) ;
                String b = str[ i ].split ( ";" )[ 1 ].trim ().substring(2) ;
                String c = str[ i ].split ( ";" )[ 2 ].trim ().substring(2) ;
                System.out.println ( "a = " + a ) ;
                System.out.println ( "b = " + b ) ;
                System.out.println ( "c = " + c ) ;
            }
        }
    }
      

  4.   

    用StringBuffer看看能不能用readLine()读取!
    然后再split(";")
      

  5.   

    xiaohuozhi() ,xiexiehou那个字符串就是我上面列举的那种形式,你们怎么能把"\r\n"加到里面再split呢,如果能这样做的话,那且不是已经将每一行分离出来了?StringBuffer没有readLine()方法啊,我的直觉认为用readLine()这种方法读取应该有道理,我先试试,希望大家继续关注
      

  6.   

    用StringTokenizer,把"\r\n"作为分隔符。
      

  7.   

    如果你的数据在文件里面,首先用readLine()读取;如果你的数据在变量里面,首先用split把"\r\n"作为分隔符分行然后对每一行的数据用split把";"作为分隔符
    最后是对每个数据用split把"="作为分隔符
    这样就得到你要的数据了上面的split也可以用StringTokenizer,不过这样效率不好
      

  8.   

    哈哈,我们现在的项目,有一个部分的功能就和你说的一模一样我们是把这个字符串存到 VECTOR中,然后再进行解析!不过我们自己编写了一个方法,对没一个字节进行查询!如果你有时间 我可以给你发一部分代码
      

  9.   

    baggio5277(青蛙王子) ,谢谢。我的msn:[email protected]
      

  10.   

    1)用String是行不通的,那么大一篇用String去处理?
    2)文件读取的时候用BufferReader,readLine()读取一行;
    3)拆分这行;
    4)直到EOF.