首页 > 代码库 > 关于String的split方法的一点疑问

关于String的split方法的一点疑问

  今天莫名其妙的又做了一下leetcode上面的第一题,是简单的字符串逆序输出问题。下面是我处理的代码:

public String reverseWords(String s) {        if(s == null) return new String("");                StringBuffer fir = new StringBuffer(s);        if(fir.length() == 0) return new String("");                while(fir.length() != 0 && fir.charAt(0) == ‘ ‘){            fir = fir.deleteCharAt(0);        }        if(fir.length() == 0) return new String("");                StringBuffer res = new StringBuffer();        String son[] = fir.toString().split(" ");                for(int i = son.length - 1; i > 0; i--){            //if(son[i].length() == 0) continue;            son[i] = son[i].trim();            res.append(son[i] + " ");        }                    res.append(son[0].trim());        return res.toString();    }

  当我用split(" ")切割字符串时,如果有连续空格,那应该会切出来只包含一个空格的子串,但是代码中被注释掉的语句竟然成功的处理了那些只包含空格的子串,使其不会出现在返回结果中。

  也就是说,如果被注释行保持注释,调用:s.reverseWords("this  is  a  blog "),得到的输出将是:”blog  a  is  this“,注意,这里每个Word中间都间隔有两个空格,但是如果取消掉注释语句,那得到的结果则是:”blog a is this“,这里每个Word之间都只间隔有一个空格的。

  这种情况让人有些疑惑,不知是否有大牛能够给些见解,怕自己以后忘记,先把问题摆在这里。。。