黑马程序员技术交流社区

标题: split()函数分析 [打印本页]

作者: xjqalec32    时间: 2015-4-5 20:49
标题: split()函数分析
本帖最后由 xjqalec32 于 2015-4-5 20:53 编辑

split(String regex)是String类中的一个函数,作用是以字符串类型为分割符来切割原字符串,返回值是String[]。

但是编写了几个代码后发现,就像毕老师说的一样,位于末位的连续几个切割符并不会分割出空的String类数组成员;


例:
class  Test
{
        public static void main(String[] args)
        {
                String s="asd1asd";
                String s1="1asd1asd1";
                String s11="11asd1asd11";
               
                String[] arr=s.split("1");
                String[] arr1=s1.split("1");
                String[] arr11=s11.split("1");
               
                printArr(arr);
                printArr(arr1);
                printArr(arr11);

        }
        static void printArr(String[] arr)
        {
        for (int x=0; x<arr.length;x++ )
                {
                        System.out.print("\'"+arr[x]+"\'"+"\t");
                        if (x==arr.length-1)
                        {
                                System.out.println();
                        }
                }
        }
}




结果如下:
'asd'     'asd'
''          'asd'     'asd'
''          ''           'asd'       'asd'




可以看到末位连续切割符没起作用,这也是为什么不能用split函数来计算一个字符串中某字符串出现的次数的原因了!



作者: jiandonn    时间: 2015-4-5 22:12
谢谢   学习了
作者: 马士基    时间: 2015-4-5 22:17
如果能探究一下原因就更好了
作者: xjqalec32    时间: 2015-4-5 22:25
马士基 发表于 2015-4-5 22:17
如果能探究一下原因就更好了

java里这个函数就是这样定义的
作者: 快乐ABC    时间: 2015-4-5 23:40
看下java源码就知道了
作者: natsu647    时间: 2015-4-6 14:26
学习了,原来第一位会切一个空字符串出来,末位就无视掉啊。
作者: shw16888    时间: 2015-4-6 14:29
谢谢,学习了
作者: chenlong    时间: 2015-4-6 14:58
看不懂啊
作者: 黑色救护车    时间: 2015-4-6 18:34
学习了!多谢分享~
作者: 小七28    时间: 2015-4-6 22:27
O(∩_∩)O谢谢分享~~~




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