当我在java中拆分字符串时,如下面的代码所示,它将长度设为3。
String data = "DK4..||VSDK4|";
String[] tokens = data.split("\\|");
System.out.println(tokens.length);
然而它应该是4,这背后可能是什么原因?
答案 0 :(得分:3)
因此,结尾的空字符串不包含在结果数组中。
这是因为split
只有一个参数调用split
,第二个参数为0
,根据该方法的documentation
如果n为零,则模式将被应用尽可能多次,数组可以具有任何长度,并且将丢弃尾随空字符串。
答案 1 :(得分:3)
请参阅split(String regex)
的文档:
围绕给定正则表达式的匹配拆分此字符串。 此方法的工作方式就像通过调用双参数split方法一样 给定的表达式和一个零的限制参数。 尾随空 因此,字符串不包含在结果数组中。
您可以使用split(String regex, int limit)
使用否定limit
来获取所有内容:
String[] tokens = data.split("\\|", -1);
如果n是非正数,那么模式将被应用多次 可能,阵列可以有任何长度。如果n为零,那么 模式将尽可能多地应用,数组可以有 任何长度,尾随空字符串都将被丢弃。