[英]Java string split length
System.out.println("neon.mems.cmu.edu/people/".split("/").length); // output is 2
我正在做一些URL处理。 令我惊讶的是,我刚得到上面的结果。 我认为元素的数量可以是分离器的数量加一。
我直到现在都没有意识到最后一个空字符串(或者只是null
)是从拆分数组中删除的。 我想知道每种编程语言是否都是这种情况。
不,并非每种编程语言都如此,也没有通用规范,因此没有理由。
走
a := strings.Split("neon.mems.cmu.edu/people/", "/")
fmt.Println(len(a)) // prints 3
Java脚本
在浏览器的控制台中输入以下内容:
"neon.mems.cmu.edu/people/".split('/')
结果是
["neon.mems.cmu.edu", "people", ""]
匹配为空时,您应该怎么做并不是split
概念的明显内容或固有内容。 一个证明是,旧的Internet Explorer版本确实删除了那些空匹配项 。
为什么要丢弃空字符串?
String#split(regx)
内部调用String#split(regx,0)
,该String#split(regx,0)
执行Pattern.compile(regex).split(this, limit);
实际上- 代码段
if (limit == 0)
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--;
如果limit为0,则从resultSize丢弃空字符串。
如何获得理想的结果?
String#split(regx,limit)
使用可得到所需的结果。
System.out.println("neon.mems.cmu.edu/people/".split("/",3).length);
结果:
3
关于语言规范,我同意@dystroy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.