Java字符串拆分长度

时间:2013-01-22 08:47:59

标签: java string split

System.out.println("neon.mems.cmu.edu/people/".split("/").length); // output is 2

我正在做一些网址处理。令我惊讶的是,我刚刚得到了上面的结果。我认为元素的数量可以是分割器的数量加一。

到目前为止,我没有意识到最后一个空字符串(或只是null)已从分割数组中切断。我想知道每种编程语言是否都是这种情况。

2 个答案:

答案 0 :(得分:5)

不是每种编程语言都不是这样,并且没有通用规范,所以没有理由这样做。

<强>开始

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

答案 1 :(得分:1)

  

为什么它被丢弃空字符串?

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--;

如果limit为0,则从resultSize中丢弃空字符串。

  

如何获得理想的结果?

String#split(regx,limit)使用获得所需的结果。

System.out.println("neon.mems.cmu.edu/people/".split("/",3).length);

结果:

 3

关于语言规范,我同意@dystroy