繁体   English   中英

Java字符串拆分结果

[英]Java String split result

我不明白为什么这会得到3的输出:

String[] split = "name:john;;sex:m;;".split(";");
System.out.println(Arrays.toString(split) + " size " + split.length);

我已经阅读了Oracle文档,但仍然不知道为什么是3。

为什么输出为:

[name:john, , sex:m] size 3

在哪里使用“”(列表中的第二个),以及为什么“ ;;” 最后没有出现在输出中。

文件说

该方法的工作方式就像通过调用具有给定表达式且限制参数为零的二参数拆分方法。 因此,结尾的空字符串不包括在结果数组中。

这里

split(";")将在每个分号之前,之间和之后获取字符串。 因此,在操作过程中的某个时刻,您的split数组理论上将为{"name:john","","sex:m","",""} 但是, split()删除了结尾的空字符串,因此您实际上得到了{"name:john","","sex:m"}

至于为什么没有打印终端分号的原因,是因为您可以无限制地分割每个单独的分号。 limit是结果数组的长度。

您通常可以通过对多个字符使用正确的regex来修复内部空字符串。 您可能要检查split(";++") 如果要使用终端分号,则需要设置一个限制split(";++",2)

看起来Arrays.toString用空格字符表示split数组,而不是用String.split返回的String数组中的实际值,它是空字符串"" 最后的两个分号不在输出中,因为String.split仅将空字符串插入其数组中您指定的分隔符出现在其数组中的位置,而不是在字符串结束之后。

''来自您在name:johnsex:m之间插入的两个分号。 它们不在末尾的事实是因为java会忽略列表末尾的空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM