加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

转:Java中String的split()方法的一些需要注意的地方,尤其是空字符串

(2017-09-26 00:39:58)
分类: java
方法的一些需要注意的地方

在测试的时候字符串的split()方法出现的问题,在使用的时候存在以下几个需要注意的地方。
本来使用split()方法是判断String的数量,结果这么的不靠谱,最后换成了hashset动态添加字符串,然后求hashset.size()的方法得到字符串的个数解决的。。。。

public String[] split(String regex, int limit)  
 split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,这里我就不讨论第二个参数(可选)的含义详见官方API说明

在做项目期间曾经遇到一个“bug”,就是当split函数处理空字符串时,返回数组的数组竟然有值。。。查完API才发现就是这么规定的。

官方API 写道
If the expression does not match any part of the input then the resulting array has just one element, namely this string.

原来我不能小看空字符串,它也是字符串的一种,当split函数没有发现匹配的分隔符时,返回数组就只包含一个元素(该字符串本身)。以为这样就结束了,幸亏我做了几个试验,忽然又发现了一些问题,代码如下:
原来我不能小看空字符串,它也是字符串的一种,当split函数没有发现匹配的分隔符时,返回数组就只包含一个元素(该字符串本身)。以为这样就结束了,幸亏我做了几个试验,忽然又发现了一些问题,代码如下:

public class Split {  
  
    public static void main(String[] args) {  
        String str1 = "a-b";          
        String str2 = "a-b-";  
        String str3 = "-a-b";  
        String str4 = "-a-b-";  
        String str5 = "a";  
        String str6 = "-";  
        String str7 = "--";  
        String str8 = "";   //等同于new String()  
          
        getSplitLen(str1);  
        getSplitLen(str2);  
        getSplitLen(str3);  
        getSplitLen(str4);  
        getSplitLen(str5);  
        getSplitLen(str6);  
        getSplitLen(str7);  
        getSplitLen(str8);  
    }  
      
    public static void getSplitLen(String demo){  
        String[] array = demo.split("-");  
        int len = array.length;  
        System.out.print("\"" + demo + "\"长度为:" + len);  
        if(len >= 0){  
            for(int i=0; i
                System.out.print(" \""+array[i]+"\"");  
            }             
        }  
        System.out.println();  
    }  
}  

运行结果:
"a-b"长度为:2 "a" "b"
"a-b-"长度为:2 "a" "b"
"-a-b"长度为:3 "" "a" "b"
"-a-b-"长度为:3 "" "a" "b"
"a"长度为:1 "a"
"-"长度为:0
"--"长度为:0
""长度为:1 "" 

理解如下:
当字符串只包含分隔符时,返回数组没有元素;
当字符串不包含分隔符时,返回数组只包含一个元素(该字符串本身);
字符串最尾部出现的分隔符可以看成不存在,不影响字符串的分隔;
字符串最前端出现的分隔符将分隔出一个空字符串以及剩下的部分的正常分隔;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有