string类的split()的特殊行为

时间:2017-10-17 05:57:07

标签: java string

根据我的理解,下面的程序应该打印ViewBag作为输出。

但是,当我运行此程序时,我得到0,0作为输出。

1,0

请帮助我了解这里发生了什么?

4 个答案:

答案 0 :(得分:5)

相关代码

Choose color for unselected item

答案 1 :(得分:5)

在第一种情况下,由于根本没有匹配,因此将按照Javadoc的这一部分返回字符串:

  

如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即该字符串。

至于你的第二种情况,如果发生拆分,将删除尾随的空字符串:

  

如果 n 为零,则模式将被应用尽可能多次,数组可以具有任何长度,尾随空字符串将被丢弃

(强调我的)

来源:Javadoc

答案 2 :(得分:4)

正如文件https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String,%20int)

中所述

“如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即此字符串”

由于输入不包含正则表达式,即“;”它返回整个字符串。

答案 3 :(得分:3)

你找到了一个很酷的边缘案例: 如果字符串不包含char,则将其拆分为仅返回包含该字符串的数组

如果分隔字符在字符串中,那么您将获得一个包含所有分割的数组,但空字符串除外。

所以在第二种情况下,结果应该是一个带有两个空字符串的数组,但是split函数会删除它们。在第一种情况下,由于拆分实际上没有拆分任何东西,并且它不会删除任何东西。