使用.split计算字符串中的值的数量(&#34 ;;")

时间:2016-03-28 13:54:01

标签: java

如何成功计算String中通过分号分隔的值的数量(包括空值)?

我有这个字符串:

;;C;D;E;F;G

正确数量的值将是' 7',但是当我使用.split时,由于空值,它会返回错误的数字。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

自您的问题以来的示例正常工作

System.out.println(";;C;D;E;F;G".split(";").length);

打印7

但是当空元素位于字符串的末尾时可能会出现问题,例如

System.out.println(";;C;D;E;F;G;;".split(";").length);

将返回7。这是为什么?因为split(regex)使用split(regex,limit)版本且limit设置为0。此限制表示拆分行为,其中将删除尾随的空元素。

如果您不想删除尾随的空元素,请使用负限制,如

System.out.println(";;C;D;E;F;G;;".split(";", -1).length);
//                                            ^^-negative limit

现在将打印9

答案 1 :(得分:2)

String#split()可能返回错误的数字,因为只有当分隔符位于文本的尾部时才会显示空值,例如";;C;D;E;F;G;;"。为避免使用text.split(regex, -1)