split(regex, 0)
返回
split(regex)
的结果,其中
0
是
limit
。根据
文档(
n
表示limit):
如果n
为零,则模式将被尽可能多次地应用,数组可以具有任何长度,并且尾随空字符串将被丢弃。
这意味着,在类似以下的代码中:
"ababaa".split("a")
一开始你会得到数组 ["", "b","b","",""]
,但是接下来尾部的空字符串将被移除,因此最终你会得到数组 ["","b","b"]
但是如果你的字符串包含可以完全匹配 split
模式的文本,例如:
"ababab".split("ab")
最初的结果数组将包含["","","",""]
(三个分割),但是然后空的尾随字符串将被删除。由于它们都是尾随的空字符串,因此将它们全部从数组中删除,并返回一个空数组[]
(大小为0的数组)。
因此,要获得空数组作为结果,您需要在可以与split
模式匹配的部分构建的字符串上进行拆分。这意味着在yourString.split(" ")
的情况下,yourString
必须只包含空格(至少一个,请参见BTW获取更多信息)。
顺便说一句,如果原始字符串为空""
,并且我们调用"".split("any-value")
,则不会进行拆分(拆分什么也没有没有意义)。在这种情况下,包含原始字符串[""]
的数组将被返回,并且该空字符串将不会被删除,因为它不是拆分的结果。
换句话说,只有当这些空字符串是作为拆分结果创建的时,删除尾随空字符串才有意义,例如"abaa".split("a")
最初创建["","b", "",""]
。因此,当没有发生拆分时,“清理”不是必需的。在这种情况下,结果数组将包含原始字符串,如我在此主题上的早期答案中所解释的那样。
"\\。"
而不是"."
才能使其工作;否则它将匹配 一切 并返回一个空数组。 - klaar