日期:2014-05-20  浏览次数:20836 次

split("\\|")对于空字符串,为什么是1
split("\\|")对于空字符串,为什么是1,
是使用不当吗?比如"".split("\\|").length是1.

------解决方案--------------------
Java code

String[] strs=" |asdf".split("\\|");
        System.out.println(strs.length);
        System.out.println(strs[0].equals(""));
        System.out.println(strs[1]);
//事实胜于雄辩。
2
true
asdf

------解决方案--------------------
Java code

public class TestSpilt {
   public static void main(String[] args){
       String str="";
       System.out.println(str.split("\\|").length);//输出1
   } 
}

------解决方案--------------------
Java code

 public String[] split(CharSequence input, int limit) {
        int index = 0;
        boolean matchLimited = limit > 0;
        ArrayList<String> matchList = new ArrayList<String>();
        Matcher m = matcher(input);

        // Add segments before each match found
        while(m.find()) {
            if (!matchLimited || matchList.size() < limit - 1) {
                String match = input.subSequence(index, m.start()).toString();
                matchList.add(match);
                index = m.end();
            } else if (matchList.size() == limit - 1) { // last one
                String match = input.subSequence(index,
                                                 input.length()).toString();
                matchList.add(match);
                index = m.end();
            }
        }

        // If no match was found, return this
        if (index == 0)
            return new String[] {input.toString()};