“xx-xx-” 用“-”分割组成数组  成三个元素 最后一个为空的也要?
怎么处理?

解决方案 »

  1.   

    s.split("-",-1)参见public String[] split(String regex,int limit)。
      

  2.   


            String[] ss = "xx-xx-".split("-",-1);
            System.out.println(Arrays.toString(ss));
      

  3.   

    那就自己判断一下最后一个是不是 - ,如果是再追加一个元素
    String s = "xx-xx-";
    String[] sa = s.split("-");
    if (s.endsWith("-")) {
        String[] tmp = new String[sa.length+1];
        System.arraycopy(sa, 0, tmp, 0, sa.length);
        tmp[tmp.length-1] = "";
        sa = tmp;
    }
      

  4.   

    split
    public String[] split(CharSequence input,
                          int limit)围绕此模式的匹配拆分给定输入序列。 
    此方法返回的数组包含输入序列的子字符串,由匹配此模式的另一子序列或输入序列的结尾终止。数组中子字符串的顺序与其在输入中出现的顺序相同。如果此模式与输入的任何子序列都不匹配,那么得到的数组仅包含一个元素,即字符串形式的输入序列。 limit 参数控制应用模式的次数,从而影响结果数组的长度。如果限制 n 大于零,那么模式至多应用 n> - 1 次,数组的长度不大于 n,并且数组的最后条目将包含除最后的匹配定界符之外的所有输入。如果 n 非正,那么将应用模式的次数不受限制,并且数组可以为任意长度。如果 n 为零,那么应用模式的次数不受限制,数组可以为任意长度,并且将丢弃尾部空字符串。 例如,输入 "boo:and:foo" 将产生以下结果及参数: Regex    
     Limit    
     Result    
     
    : 2 { "boo", "and:foo" } 
    : 5 { "boo", "and", "foo" } 
    : -2 { "boo", "and", "foo" } 
      

  5.   

    就是说split后面带的int类型limit的值可以为任何负数
    为整数的话需要看你最后是不是分隔符 如果是要 >= String.split("-").length + 1 
      

  6.   

    建议楼主遇到问题的时候多在API文档中找找。