关于Java中的拆分

时间:2013-11-19 15:56:55

标签: java split

我是Java初学者,如果这是一个非常简单的答案,请耐心等待。 假设我的代码如下所示:

String str;
    String [] splits;
    str = "The words never line up in such a way ";
    splits = str.split(" ");

    for (int i = 0; i < splits.length; i++)
        System.out.println(splits[i]);

Java在字符串末尾做了什么?在“路”之后有一个空间;因为在空间之后没有值,Java决定不再分割?

非常感谢!

3 个答案:

答案 0 :(得分:1)

根据split(),http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)

的Java文档

split(String r)等效于split(String r,0)方法,它将忽略并且不包含任何空白的尾随空字符串。具体来自文档:

  

因此,结尾的空字符串不包括在内   阵“。

因此,拆分后数组中的最后一个元素将是“way”

您可以通过执行您提到的代码来确认这一点。

答案 1 :(得分:0)

如果使用split方法,则在分隔符后不会获得任何尾随空格。实施例

class Main
{
    public static void main (String[] args) 
    {
        String str;
        String [] splits;
        str = "The words never line up in such a way     "; // some empty string after delimiter at end
        splits = str.split(" ");

        for (int i = 0; i < splits.length; i++)
            System.out.println(splits[i]);

        System.out.println("END");  
    }
}

输出

The
words
never
line
up
in
such
a
way
END

查看末尾分隔符没有拆分字符串。

现在

class Main
{
    public static void main (String[] args) 
    {
        String str;
        String [] splits;
        str = "The words never line up in such a way  yeah";
        splits = str.split(" ");

        for (int i = 0; i < splits.length; i++)
            System.out.println(splits[i]);

        System.out.println("END");  
    }
}

输出

The
words
never
line
up
in
such
a
way

yeah
END

在分隔符后看到一个额外的字符串,它也是一个空字符串但不是尾随字符串,因此它将在数组中。

答案 2 :(得分:0)

我一直在关注javadoc及其所说的关于String.split的内容:

  

此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。 因此不会在结果数组中包含尾随空字符串

这个方法似乎用两个参数调用.split:

  

limit参数控制模式的次数   应用因此会影响结果数组的长度。如果   限制n大于零,那么模式将应用于   大多数n - 1次,数组的长度不会大于n,并且   数组的最后一个条目将包含除最后一个匹配之外的所有输入   分隔符。如果n是非正数,那么该模式将被应用为   尽可能多次,阵列可以有任何长度。如果n为零   那么模式将尽可能多地应用于数组   可以有任何长度,尾随空字符串将被丢弃

感谢