繁体   English   中英

Java字符串分割长度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM