本帖最后由 zhouxy123 于 2014-09-23 10:53:30 编辑

解决方案 »

  1.   

    public static void main(String[] args) {
    String str = "20140923|#|123|#|2014092300000001|#|xx|#|中国好声音|#|A|#|B|#||#||#|";
    List<String> list = new ArrayList<String>();
    while(str.indexOf("|#|") != -1){
    String temp = str.substring(0,str.indexOf("|#|"));
    list.add(temp);
    if(str.indexOf("|#||#|") == str.indexOf("|#|")){
    if(temp.length()==0){
    str = str.substring("|#|".length());
    }else{
    str = str.substring(temp.length());
    }

    }else{
    str = str.substring(str.indexOf("|#|")+"|#|".length());
    }
    }
    for(String s : list){
    System.out.println(s);
    }
    System.out.println("list size:::::"+list.size());
    }不知道你是不是想要这样的..   菜鸟勿喷..
      

  2.   

    String[] strs = str.split("\\|#\\|", (str.length()-str.replace("|#|", "").length())/3+1);
    这样使用就可以了。多看一下api,split()除了默认长度还可以指定任意数组长度。
    原码是这样的,默认limit为0
            if (limit == 0)
                while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
                    resultSize--;
            String[] result = new String[resultSize];
            return matchList.subList(0, resultSize).toArray(result);