黑马程序员技术交流社区

标题: 关于String中split的用法问题? [打印本页]

作者: HM许涛    时间: 2013-4-18 14:58
标题: 关于String中split的用法问题?
以下两段代码,一个显示2、一个显示3。不是很理解原因。个人猜测是否有隐藏的开头之类的部分,但是找不到相关文档说明,希望有知道的不吝赐教。
class Noname1
{
        public static void main(String[] args)
        {
                String str="a黑马程序a训练营";
                sop("数量=  "+str.split("a").length);
        }
        static void sop(String str)
        {
                System.out.println(str);
        }
}
执行结果显示为 3。
class Noname1
{
        public static void main(String[] args)
        {
                String str="黑马程序a训练营a";
                sop("数量=  "+str.split("a").length);
        }
        static void sop(String str)
        {
                System.out.println(str);
        }
}
结果为 2。
作者: 刘胜寒    时间: 2013-4-18 15:14
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
哥们懂了没....


作者: HM许涛    时间: 2013-4-18 20:08
刘胜寒 发表于 2013-4-18 15:14
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给 ...

嗯,谢谢哈,不是太理解,我再去学习下正则表达式
作者: 黄玉昆    时间: 2013-4-19 13:09
其实在java中很多方法在涉及到头和尾的操作时,都是只要头,不要尾的,比如说String中的toString()方法
这个spli()t也是一样的,你在切割的时候,当a在头部的时候,你切割获得了一个空字符串对象,即"",这个不是null,也不是一个空格,是一个空字符串。所以是三个。
而第二种,a是放在了结尾了,即使切到了结尾的空字符串,但是并不返回,即取不到,所以返回的字符串数组只有两个元素。所以长度为2
作者: 黄玉昆    时间: 2013-4-20 14:47
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2