split()方法分割字符串中的问题

使用split()方法可以是字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。split()方法提供了以下两种重载形式:
(1)split(String sign)
该方法可根据给定的分割符对字符串进行拆分。
语法如下:

str.split(String sign)

其中,sign未分割字符串的分隔符,也可以使用正则表达式。

(2)split(String sign , int limit)

该方法可以根据给定的分割符对字符串进行拆分,并限定拆分的次数。
语法如下:

str.split(String sign , int limit)

sign : 分割字符串的分隔符,也可以使用正则表达式。
limit:限制的分割次数。(等于分割后字符数组的元素个数)

在使用过程中,发现如果字符串中有“.”,并且想用“.”来分隔字符串,出现了如下问题:

代码1:

        System.out.println("***********");
        String s13 = new String("abc.def.ghi.gkl");
        String[] s14 = s13.split(".",2);
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }
        System.out.println("-----------");

运行结果:

这里写图片描述

结果显示分解后产生了2个字符串:“ ”和“bc.def.ghi.gkl”

如果代码改为
代码2:

        System.out.println("***********");
        String s13 = new String("abc.def.ghi.gkl");
        String[] s14 = s13.split(".");
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }

        System.out.println("-----------");

结果:

这里写图片描述

进一步,将代码改为
代码3:

        System.out.println("***********");
        String s13 = new String("abc/def/ghi/gkl");
        String[] s14 = s13.split("./");
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }

        System.out.println("-----------");

结果:

这里写图片描述

经验证,这时因为“.”在正则表达式中匹配除“\r\n”外的任何单个字符。

想要用“.”来分割字符串的正确代码:

        System.out.println("***********");
        String s13 = new String("abc.def.ghi.gkl");
        String[] s14 = s13.split("\\.");
        for (int i = 0; i < s14.length; i++) {
            System.out.println(s14[i]);
        }

        System.out.println("-----------");

结果:

这里写图片描述

正则表达式参考:http://baike.baidu.com/link?url=q6WkLM4gvAk1e4bYKrvsfdu-jGgeKUianU0t-bL4czkZkzqnZoroGyCbHNKv-YhtJV0VNiXCMzFPizTxe27nwa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值