关于Java中的拆分

关于Java中的拆分,java,split,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]); String

我是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]);
String-str;
字符串[]拆分;
str=“单词永远不会以这种方式排列”;
拆分=str.split(“”);
对于(int i=0;i
Java在字符串末尾做什么?在“方式”之后有一个空间;既然空间之后没有值,Java会决定不再拆分吗


非常感谢

根据split()的Java文档

split(stringr)相当于split(stringr,0)方法,它将忽略并且不包括任何空白的尾随空字符串。特别是从文件中:

“因此,结果中不包括尾随的空字符串 阵列。“

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


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

如果使用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");  
    }
}
有关结束分隔符,请参见无拆分字符串

现在


请参阅分隔符后面的额外字符串,该字符串也是空字符串,但不是尾随字符串,因此它将位于数组中

我一直在看javadoc,下面是它所说的:

该方法的工作原理类似于使用给定表达式和零限制参数调用双参数split方法因此,结果数组中不包括尾随空字符串

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

limit参数控制填充图案的次数 应用,因此会影响结果数组的长度。如果 极限n大于零,则模式将应用于 大多数情况下,数组的长度将不大于n,并且 数组的最后一个条目将包含最后一个匹配项之外的所有输入 定界符。如果n为非正,则图案将按如下方式应用 尽可能多次,数组可以有任意长度。如果n为零 然后,阵列将尽可能多次应用该模式 可以有任何长度,并且尾随的空字符串将被丢弃


谢谢

你试过了吗?
splits
的最后一个元素应该是空字符串。您自己试试吧?:)告诉我们发生了什么?@RobinKrahl不,不会的<代码>拆分
默认情况下会忽略任何尾随的空字符串。@RohitJain哦,你说得对。我把它错当成了两个连续的空格。解决这个问题的两种方法应该是:1)就像有人说过的那样,编译代码并尝试一下!(打印splits.length也是一个好主意)2)谷歌“java字符串拆分”(第一个成功案例是官方javadoc api文档,说明“结果数组中不包括尾随的空字符串”,并给出了一些拆分工作原理的示例)
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