#A88168||~||0||~||0||~||0||~|| ||~||0||~||0||~||0

#A88168||~||0||~||0||~||0||~||||~||1||~||0||~||0
这两个我用Pattern.compile("[||~||]+")来截,第二个截的就会比第一个少一个字节,请大侠们指教怎么才能截到那个没有值的空值

解决方案 »

  1.   

    你这种情况还不如直接split了。
    String str = "#A88168||~||0||~||0||~||0||~||||~||1||~||0||~||0";
    String[] res = str.split(Pattern.quote("||~||"));
    System.out.println(Arrays.toString(res));
      

  2.   

    String str1 = "||~||0||~||0||~||0||~|| ||~||0||~||0||~||0";
    String str2 = "||~||0||~||0||~||0||~||||~||1||~||0||~||0";
    String match = "([|]{2}[^ ]?)+";
    System.out.println(str1.matches(match));
    System.out.println(str2.matches(match));
      

  3.   

    用split结果会产生一个数组,并且为了找空格还要对两个数组遍历判断,所以不考虑用split,用你原来的思路就可以了,只是你的正则不对应该用([|]{2}[^ ]?)+