最近在写个功能,需要读取字符串后,用逗号进行分隔处理,楼主正则不太好,看了2个小时别人的博客也没写出来,麻烦大家帮忙,例如String line = "abc,123,\"love123,520\"";
String[] arrs = line.split(正则表达式);
 System.out.println(arrs.length);// 3

解决方案 »

  1.   

    没能理解你说的。String line = "abc,123,\"love123,520\"";
    String[] arrs = line.split(",");
     System.out.println(arrs.length);// 3这样就可以了吧
      

  2.   

    首先呢,你得分成两部分,一部分是引号里的,一部分是引号外的,将引号里的单独处理。
    不知道你的不分隔处理是什么意思,是单独提出来不做处理吗? String line = "abc,123,\"love123,520\"";

    Pattern pa=Pattern.compile("\"(.*?)\"");  
    Matcher ma=pa.matcher(line);  
    String rep = null; //被替换的内容

    //替换引号里的内容
    while(ma.find())  
    {                 
    line=line.replace(ma.group(),"**");
    rep = ma.group();


    String[] arrs = line.split(",");

    //去掉逗号后的内容
    for(String a:arrs){
    System.out.print(a);
    }
    System.out.println();
    System.out.println(arrs.length); //3
    System.out.println(rep);
      

  3.   

    双引号内的不分隔,最后的结果是arr[0] = abc
    arr[1]=123
    arr[2]="love123,520"
      

  4.   

    这是一种思路,多谢啊,我这个demo太短了,如果这个字符串中有很多个双引号,比如:String line = "abc,123,\"love123,520\",\"234,345\",\"123,098\"";
    你这种方式会就复杂许多,不知道一个正则能否搞定?
      

  5.   

    这是一种思路,多谢啊,我这个demo太短了,如果这个字符串中有很多个双引号,比如:String line = "abc,123,\"love123,520\",\"234,345\",\"123,098\"";
    你这种方式会就复杂许多,不知道一个正则能否搞定?大概是这样的,如果你只是想去掉逗号,按照原字符输出,还得加一下逻辑
      

  6.   


    (?<!("[^,]{1,1000})),(?![^,]{1,1000}")
    (?<!("[^,]+)),(?![^,]+")//没测试过,非jdk8可以试试这条。
      

  7.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test{
    public static void main(String[] args){
    String content = "abc,123,\"love123,520\"";
    String regex = "(((\"[^\"]*\")|[^\",])*)(,|$)";
    Matcher matcher = Pattern.compile(regex).matcher(content);
    while(matcher.find()){
    System.out.println(matcher.group(1));
    }
    }
    }
      

  8.   

    ---------- java ----------
    abc
    123
    "love123,520"
    Output completed (0 sec consumed) - Normal Termination