String test = "a   vf";
      String[] tokens = test.split("\\s");   
      System.out.println(tokens.length);输出怎么会是4呢?应该是2吧。

解决方案 »

  1.   

    a   vf这中间不止一个空格啊
      

  2.   


         String test = "a   vf";
          String[] tokens = test.split("\\s+");   
          System.out.println(tokens.length);这样就对了吧!
      

  3.   

    中间三个空格,那么就是4了……"a" "" "" "vf"
    是不是4个呢?
      

  4.   

    你那个是空格字符的表达式
    空白表达式包括[ \t\n\x0B\f\r]要是你只想空格,还是老老实实的" "这样吧
      

  5.   

    aUUUvf大家看吧,U代表空格,那么第一个U分隔,
    a
    后边是UUvf
    这里的第一个U是字符串,
    那么第二个U再次成为分隔符。
    vf那么共是 a U vf
    length = 3;
      

  6.   


    混乱……
    "aUUUvf"="a"+"U"+""+"U"+""+"U"+"vf"
    U作为分隔符,把所有的U去掉,剩下的就是"a"、""、""、"vf"这四个
      

  7.   


    因为JVM把每个空格都当作分割符,空格之间当作一个空字符串,3个空格中间就有2个空字符"";加上"a"和"vf"就是四个了;可以用a,,,vf试下,也是四个,跟用空格分隔字符串无关,这是String 中spit();的分割原理造成的;
      

  8.   

    \s 不是空格,表示的是空白字符,比如:空格、TAB、换行符、回车符等。
    按不定量空格拆要写成这样!(“+”前面有个空格)
    String[] strs = str.split(" +");
      

  9.   

    如果:
    String a = "aUUUUU"; 那么只有一个
    String a = "UUUUUU"; 只有零个。
    String a = "aUUUUb"; 却有5个。
    为什么???
      

  10.   

    因为split("U")实际调用split("U", 0),尾部所有空字符串都被去掉了
    split("U", -1)看看结果把