• Java字符串split方法的小陷阱

    2009-07-29 17:07:57 by deepblue

    今天在写一个Java字符串切分程序时,发现切分后的计数一直有问题,调了半天才找到原因。。。

    下面先来看一个问题:有字符串str=“string split test” ,使用String类的split方法,根据空格切分后的字符串数组有多少个元素?我们可以用下面的程序来测试:

     

    String str = "string split test";
    String[] result = str.split(" ");
    System.out.println("Result size: " + result.length);
    for (String s : result)
    System.out.println(s);

    程序输出为:

     

    Result size: 3
    string
    split
    test

    嗯,和我们想的一样,原来的字符串被空格切分成了3个新的字符串。

     

    再来看一个问题:有字符串str=“” (空字符串),使用String类的split方法,根据空格切分后的字符串数组有多少个元素?

    还是用程序来测试:

    str = "";
    result = str.split(" ");
    System.out.println("Result size: " + result.length);
    for (String s : result)
    System.out.println(s);

     

    程序输出为:

    Result size: 1

    这里居然是1,而不是我之前认为的0,里面的元素是与原字符串相同的空字符串。

    仔细想想,其实是有道理的。无论原字符串的内容是什么,通过split切分后,如果原字符串中没有出现切分定界符,那么切分结果就返回以原字符串为原始的字符串数组;如果原字符串中有切分定界符,则从定界符处将原字符串断开,将生成的新字符串按顺序以数组的形式返回。

     

     

     


    历史上的今天:

    翻译 2008-07-29

    收藏到:Del.icio.us