System.out.println("neon.mems.cmu.edu/people/".split("/").length); // output is 2
我正在做一些URL处理。令我惊讶的是,我刚刚得到了上面的结果。我认为元素的数量可以是分离器的数量加上一个。Java字符串分割长度
我没有意识到最后一个空字符串(或者只是null
)从分割数组中截断直到现在。我想知道每种编程语言都是如此。
System.out.println("neon.mems.cmu.edu/people/".split("/").length); // output is 2
我正在做一些URL处理。令我惊讶的是,我刚刚得到了上面的结果。我认为元素的数量可以是分离器的数量加上一个。Java字符串分割长度
我没有意识到最后一个空字符串(或者只是null
)从分割数组中截断直到现在。我想知道每种编程语言都是如此。
没有,每种编程语言都不是这样,没有通用规范,所以没有理由。
转到
a := strings.Split("neon.mems.cmu.edu/people/", "/")
fmt.Println(len(a)) // prints 3
的Javascript
键入此浏览器的控制台:
"neon.mems.cmu.edu/people/".split('/')
结果是
["neon.mems.cmu.edu", "people", ""]
比赛结束时你应该做什么不是明显的或split
概念固有的。一个证明是旧的Internet Explorer版本did remove those empty matches。
很好的例子。我相信。谢谢。 –
''neon.mems.cmu.edu/people /“。split(”/“)[2]'导致'ArrayIndexOutOfBoundsException'异常。 –
@乔伊我认为你错过了我的答案中的“浏览器控制台”。根据OP对其他语言的需求,这个答案显示了一个Javascript示例。 –
为什么会丢弃空字符串?
String#split(regx)
内部调用String#split(regx,0)
其执行Pattern.compile(regex).split(this, limit);
实际上 - code snippet
if (limit == 0)
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--;
其中空字符串已经从resultSize丢弃,如果限为
如何获得期望的结果?
String#split(regx,limit)
使用得到想要的结果。
System.out.println("neon.mems.cmu.edu/people/".split("/",3).length);
结果:
3
而关于语言规范我与@dystroy
哈哈我喜欢这个把戏。我可以通过'limit'参数改变任何我喜欢的长度。 –
这是一个图书馆决定不服的 - 而不是语言的一部分的。我不会特别期待*的一致性。 –
我不确定这是一个真正的建设性问题。 –