在Java中使用多个连续逗号分割字符串

mac*_*ers 6 java regex split

String abc = "a,b,c,d,,,";
String[] arr = abc.split(",");
System.out.println(arr.length);
Run Code Online (Sandbox Code Playgroud)

输出是4.但显然我的期望是7.这是我的解决方案:

String abc = "a,b,c,d,,,";
abc += "\n";
String[] arr = abc.split(",");
System.out.println(arr.length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?有谁可以给​​我一个更好的解决方案?

Kep*_*pil 8

使用替代版本String#split()两个参数来实现这一目标:

String abc = "a,b,c,d,,,";
String[] arr = abc.split(",", -1);
System.out.println(arr.length);
Run Code Online (Sandbox Code Playgroud)

这打印

7
Run Code Online (Sandbox Code Playgroud)

从上面链接的Javadoc:

如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度.如果n为零,那么模式将被应用尽可能多的次数,数组可以具有任何长度,并且将丢弃尾随的空字符串.