如何成功计算String中通过分号分隔的值的数量(包括空值)?
我有这个字符串:
;;C;D;E;F;G
正确数量的值将是' 7',但是当我使用.split
时,由于空值,它会返回错误的数字。
我该如何解决这个问题?
答案 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)