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为零,那么模式将被应用尽可能多的次数,数组可以具有任何长度,并且将丢弃尾随的空字符串.
你绝对不希望丢弃空字符串.