这个问题在这里已经有答案了:
java字符串拆分删除空值(5个答案)四年前关门了。如何成功地计算字符串中以分号分隔的值的数目(包括空值)?例如,我有一个字符串:
;;C;D;E;F;G
正确的值数应该是“7”,但是当我使用 .split 它返回错误的数字,因为值为空。我怎样才能解决这个问题?
.split
kuuvgm7e1#
从你的问题的例子可以很好地工作,因为
System.out.println(";;C;D;E;F;G".split(";").length);
印刷品 7 .但当空元素位于字符串末尾时,问题可能会出现
7
System.out.println(";;C;D;E;F;G;;".split(";").length);
它也会回来 7 . 为什么?因为 split(regex) 使用 split(regex,limit) 版本 limit 设置为 0 . 此限制表示将删除尾部空元素的拆分行为。如果不想删除尾随的空元素,请使用负数限制,如
split(regex)
split(regex,limit)
limit
0
System.out.println(";;C;D;E;F;G;;".split(";", -1).length); // ^^-negative limit
现在打印出来 9 .
9
6kkfgxo02#
String#split() 只有在分隔符位于文本末尾时,才可能因为空值而返回错误的数字,例如。 ";;C;D;E;F;G;;" . 为了避免这种使用 text.split(regex, -1)
String#split()
";;C;D;E;F;G;;"
text.split(regex, -1)
2条答案
按热度按时间kuuvgm7e1#
从你的问题的例子可以很好地工作,因为
印刷品
7
.但当空元素位于字符串末尾时,问题可能会出现
它也会回来
7
. 为什么?因为split(regex)
使用split(regex,limit)
版本limit
设置为0
. 此限制表示将删除尾部空元素的拆分行为。如果不想删除尾随的空元素,请使用负数限制,如
现在打印出来
9
.6kkfgxo02#
String#split()
只有在分隔符位于文本末尾时,才可能因为空值而返回错误的数字,例如。";;C;D;E;F;G;;"
. 为了避免这种使用text.split(regex, -1)