Java由一个连续的字符分割

Ana*_*001 19 java string split

我有以下示例,以更好地解释我正在尝试做什么:

String text = "a,b,,,,c,,";
String[] split = text.split(",");
for(int i=0;i<split.length;i++){
    System.out.println("I = "+i+" "+split[i]);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

I = 0 a

I = 1 b

I = 2 

I = 3 

I = 4 

I = 5 c
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是获得一个大小为8的数组,包含:

I = 6 

I = 7
Run Code Online (Sandbox Code Playgroud)

当然,最后两个元素将是空字符串,但对我来说它是必不可少的.此外,我认为拥有它们是合乎逻辑的.我的意思是,如果我有:

String text = "a,b,,,,c,,d";
Run Code Online (Sandbox Code Playgroud)

结果将是一个大小为8的数组,我不认为这两个例子之间有很大的不同.

m0s*_*it0 26

String[] split = text.split(",", -1);
Run Code Online (Sandbox Code Playgroud)

这种行为实际上看起来很棘手,但实际上在官方文档中解释了(恕我直言,不是很好).

如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度

问题text.split(",")在于它等同于text.split(",", 0).使用0限制,如文档中所述:

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

你绝对不希望丢弃空字符串.

  • 哇.我不认为我能学到一些关于"String#split"这样的基本内容的新东西.我错了.问题和答案都具有极大的教育意义.也就是说,提供用户*解释*会得到一个很好的答案并使其变得更好. (6认同)