为什么Java 8的拆分不会产生最后一个令牌

Ale*_*exC 0 java java-8

我希望以下Java代码将字符串拆分为三个项目:

    String csv = "1,2,";
    String[] tokens = csv.split(",");
    System.out.println(tokens.length);
Run Code Online (Sandbox Code Playgroud)

但是,我只收到两件物品.

我必须承认,我没有深入分析这一点,但这对我来说似乎是违反直觉的.Python和C#都在Python中生成三个项目,如下所示:

def test_split(self):
    line = '1,2,'
    tokens = line.split(",")
    for token in tokens:
        print('-' + token)
-1
-2
-
Run Code Online (Sandbox Code Playgroud)

在C#中:

   [Test]
    public void t()
    {
        string s = "1,2,";
        var tokens = s.Split(',');
        foreach (var token in tokens)
        {
            Console.WriteLine("-" + token);
        }
    }
-1
-2
-
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

这是Java 1.8.0_101.

Ada*_*ker 5

使用重载版本的方法:

tokens = line.split(",", -1)
Run Code Online (Sandbox Code Playgroud)