为什么java中的String.Split(regex)返回的元素数组小于实际存在的元素数组?

时间:2014-07-04 20:12:45

标签: java arrays string split

返回的元素数量少于我在运行String.split()

时预期的数量

示例: - 实际的字符串是" country,12345,2,1 ,, 1 ,,",因此返回的数组中预计有8个元素,但是大小数组是" 6"

代码: -

String line1 = "country,12345,2,1,,1,,";
String data1[] = line1.split(",");      
System.out.println("Length : "+data1.length);

输出: -

Length : 6

为什么会这样?

3 个答案:

答案 0 :(得分:7)

因为单参数split方法会丢弃尾随空字段。如果要保留它们,请使用双参数版本,参数为负limit

String data1[] = line1.split(",", -1); 

答案 1 :(得分:0)

谢谢@Ian Roberts

Split()方法会删除空字段,因此尾随空字段不会计数。

为了更好地理解,请参阅下面的代码 -

案例1:

String line1 = "country,12345,2,1,,1, ,";
String data1[] = line1.split(",");
System.out.println("Length : "+data1.length);

Output : 7

作为逗号中的第二个字符,即某事(但不是空的),分割不会仅计算最后一部分。

案例2:

String line1 = "country,12345,2,1,,1,, ";
String data1[] = line1.split(",");
System.out.println("Length : "+data1.length);

Output : 8

作为逗号之后的最后一个字符,即某些东西(但不是空的),分割将计算所有部分。

答案 2 :(得分:-2)

我认为你必须改变正则表达式:

String data1 [] = line1.split(“\\,”);