[code]1,AAA,ddd,"1142"
2,BBB,ccc,"299.00"
3,CCCC,fff,"209850"
4,DDDDD,aaa,"001526"
5,FF,fffffffff,"med"
6,SSSS,ddddddd,"3202"
7,Autism,dsssssssssss,"D001321"
8,BBB,aaaaaaa,"shandong or shangxi"
9,QQQ,kkkkkkkkk,"shandong, shanxi"
10,KKK,bbbbbbbbbb,"shandong, shanxi"[/code]如上内容,用逗号分割成4份,但是不包括引号内的逗号.
另外分割两份,第一份是序号,第二份是剩下的内容。
每部分的内容不定。

解决方案 »

  1.   

    1,Data,fdsss,"51515"
    2,Data,asdf,"33211.00"
    3,Data,fdsa,"32131"
    4,Data,gdas,"4125532"
    5,Data,fdsaasdf,"asd"
    6,Data,fdsaf,"1251"
    7,Data,adfss,"D001321"
    8,Data2,fdasfad,"AAA or BBB"
    9,Data2,fdsafd,"AAA, BBB"
    10,Data2,fdsa,"CCC, DD"这是数据。
      

  2.   

    比如说第10条,分割成
    [10], [Data2], [fdsa], ["CCC, DD"]

    [10], [Data2, fdsa, "CCC, DD"]     
      

  3.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class DataReg {
      
       public static void main(String[] args) {
       Pattern p = Pattern.compile("^(\\d{1,}),(\\w{1,}),(\\w{1,}),(.{1,})$");
       Matcher match = p.matcher("10,Data2,fdsa,\"CCC,DD\"");
       
       if(match.find()){
       System.out.println(match.group(1)+" " +match.group(2)+" "+match.group(3)+" "+match.group(4));
       }
      }
    }
      

  4.   


    public static void main(String[] args) {
    String str = "10,Data2,fdsa,\"CCC, DD\"";
            String arr[] = str.split(",(?!=.+?\")");
            System.out.println(java.util.Arrays.toString(arr));
            Matcher m = Pattern.compile("(\\d+),(.*)").matcher(str);
            if(m.find()){
             System.out.println(m.group(1)+"========="+m.group(2));
            }
    }
      

  5.   


    public static void main(String[] args) {
    String str[] = {"1,Data,fdsss,\"51515\"",  
     "2,Data,asdf,\"33211.00\"" ,
            "9,Data2,fdsafd,\"AAA,  BBB\"" ,
        "123,Data2,fdsa,\"CCC,  DD\""};
    for(String sample:str){
    String s1[] = sample.split(",(?!(?:\\s*\\w+)\")");
    System.out.println(Arrays.toString(s1));
    String s2[] = sample.split(",(?!(?:\\s*\\w+)\")", 2);
    System.out.println(Arrays.toString(s2));
    }

    }
      

  6.   


    public static void main(String[] args) {
    String str = "10,\"CCC,中国,FF,HH\",fdsa,\"CCC,EE\"";
            String s1[] = str.split(",(?!([^,\"]+(,[^,\"]+)*)\")");
            for(String s : s1){
             System.out.println(s);
            }
            System.out.println("---------------------");
            String s2[] = str.split(",(?!([^,\"]+(,[^,\"]+)*)\")",2);
            for(String s : s2){
             System.out.println(s);
            }
    }
      

  7.   

    String []s1=str.spilt(",",1);
    String []s2=str.spilt(",",3);
    如果数据格式不变的话 这个方法应该可以 
      

  8.   

    CSV 数据,参考这个帖子吧,这个用 split 没法直接弄的http://topic.csdn.net/u/20080529/18/6c4e70e9-4510-4af0-8874-207c5a9a1788.html上面帖子 6 楼的方法,不过 JDK 版本必须大于等于 1.6
      

  9.   

    不过6楼和7楼都测试好用,学习了!! Regex果然很猛!