String strTemp = "aa|bb|cc|dd||ee||f|g";
如何分割为
aa
bb
cc
dd||ee||f
g

解决方案 »

  1.   


    String s;
    s.replaceall(" ¦ &brvbar ","~");//替换为其他字符
    String[] ss = s.split(" &brvbar ");//切割
    for(String s : ss){
        s.replaceall("~", " ¦ &brvbar ")
    }
      

  2.   

    非常感谢这样不行啊 主要是有连续分隔符||?
    输出结果ss[0]==aa|bb|cc|dd||ee||f|g
      

  3.   

    方法1,处理完成后拼字串 public static void main(String[] args) {
    String strTemp = "aa |bb |cc |dd ||ee ||f |g";
    String[] ss = strTemp.split(" \\|");
    ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < ss.length; i++)
    if (ss[i].startsWith("|")) {
    list.set(list.size() - 1, list.get(list.size() - 1) + ss[i]);
    } else
    list.add(ss[i]); System.out.println(list);
    }
    方法2,临时替换 public static void main(String[] args) {
    String strTemp = "aa |bb |cc |dd ||ee ||f |g";
    strTemp = strTemp.replaceAll("\\|\\|", "~");
    String[] ss = strTemp.split(" \\|");
    for (int i = 0; i < ss.length; i++){
    ss[i] = ss[i].replace("~", "||");
    }
    }
      

  4.   

    你这个问题需要用到正规表达式的lookaround特性
    String test = "aa |bb |cc |dd | |ee | |f |g";
    String [] res = test.split("(?<! \\|) \\|(?! \\|)");
    for (int i=0;i<res.length;i++){
    System.out.println(res[i]);
    }
    由于我的IDE对GBK编码支持不好,所以将你的竖线使用“|”代替了,这个在正规表达式中又是特殊字符,需要转移,因此只要将上述表达式中的“\\|”换成你的竖线就可以了