Java字符串拆分结果
我不明白为什么它的输出是3:Java字符串拆分结果,java,string,split,Java,String,Split,我不明白为什么它的输出是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 在哪里取“”(列表中的第二个),以及为什么结尾的“;”不在输出中。它看起来像数组。toString用空格字
String[] split = "name:john;;sex:m;;".split(";");
System.out.println(Arrays.toString(split) + " size " + split.length);
我读过Oracle文档,但仍然不明白为什么是3
为什么输出是:
[name:john, , sex:m] size 3
在哪里取“”(列表中的第二个),以及为什么结尾的“;”不在输出中。它看起来像
数组。toString
用空格字符表示您的拆分数组,而不是字符串.split
返回的字符串数组中的实际值,哪个是空字符串“
”。最后两个分号不在输出中,因为String。split
仅将空字符串插入其数组中,您指定的分隔符出现在字符串中,而不是在字符串结束后。它看起来像数组。toString
用空格字符表示split
数组,而不是由String.split
返回的字符串数组中的实际值,该字符串是空字符串“
”。最后两个分号不在输出中,因为String。split
仅将空字符串插入其数组中,您指定的分隔符出现在字符串中,而不是在字符串结束后。'
来自您在name:john
和sex:m
之间插入的两个分号。它们不在末尾的事实是因为java忽略了列表末尾的空字符串。这个'
来自您在name:john
和sex:m
之间插入的两个分号。它们不在末尾是因为java忽略了列表末尾的空字符串。文档说
此方法的工作方式类似于通过调用具有
给定的表达式和零的极限参数。尾随空
因此,结果数组中不包括字符串
文件上说
此方法的工作方式类似于通过调用具有
给定的表达式和零的极限参数。尾随空
因此,结果数组中不包括字符串
拆分(;”)
将从每个分号之前、之间和之后获取字符串。因此,从理论上讲,您的拆分
数组在操作中的某个点上应该是{“name:john”、“”、“sex:m”、“”、“”}
。但是,split()
会删除尾随的空字符串,因此实际上会得到{“name:john”、“”、“sex:m”}
至于为什么不打印终端分号,是因为您对每个分号进行了拆分,没有限制。限制是结果数组的长度
您通常可以通过对多个字符使用适当的regex
来修复内部空字符串。您可能需要检查拆分(;++)
。如果您想要终端分号,您需要设置一个限制拆分(;+”,2)
拆分(;”)
将从每个分号之前、之间和之后获取字符串。因此,从理论上讲,您的拆分
数组在操作中的某个点上应该是{“name:john”、“”、“sex:m”、“”、“”}
。但是,split()
会删除尾随的空字符串,因此实际上会得到{“name:john”、“”、“sex:m”}
至于为什么不打印终端分号,是因为您对每个分号进行了拆分,没有限制。限制是结果数组的长度
您通常可以通过对多个字符使用适当的regex
来修复内部空字符串。您可能需要检查拆分(;++)
。如果您想要终端分号,您需要设置一个限制split(;+”,2)
没有任何限制。您在上拆分代码>,使之间的空白<代码>代码>是什么带走了它。在上拆分因此,代码>和Javadoc中的尾随空字符串不包括在结果数组中代码>什么都不是。您在上拆分代码>,使之间的空白<代码>代码>是什么带走了它。在上拆分因此,代码>和Javadoc中的尾随空字符串不包括在结果数组中代码>是的,它是,我已经为每个打印了这些,它是空的!漂亮的眼睛看起来像。。。但是“结尾的最后两个分号不在输出中,因为String.split只将空字符串插入其数组中,您指定的分隔符出现在字符串中,而不是在字符串结束后。”这是Oracle文档中我没有提到的部分是的,是的,我已经为每个字符串打印了这些分号,它是空的!漂亮的眼睛看起来像。。。但是“结尾的最后两个分号不在输出中,因为String.split只将空字符串插入其数组中,您指定的分隔符出现在字符串中,而不是在字符串结束后。”这是Oracle文档中我没有提到的部分Java不会忽略任何内容,split()
确实如此,而且令人惊讶的是,Java 7和Java 8在功能上存在差异。只有那些在列表末尾的?是的,只有那些在列表末尾的。中间的是被保存的。java不忽略任何东西,<代码> SPLIT()/Cuth>,在一个令人惊讶的动作中,java 7和java 8在功能上有区别。只是列表的末尾有那些区别?是的,只有在最后的那些。中间的部分是保留的。“文件应该解释它,并且链接它们描述所有的正则表达式。”