Java中split的用法

java中split的用法及注意事项

split(拆分):该方法返回值是一个数组,该方法有以下两种传参方式:

一:public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

该方法的个人理解:该方法就是当public String[] split(String regex,int limit)方法中limit为0时候的结果。

案例:

  String str="^5678^abc^ccc&12^";  
        String[] b = str.split("\\^");  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i); 
        } 
返回的结果:

==0
5678==1
abc==2
ccc&12==3       

该结果可以对应下面“limit为0且结尾有空字符串”的案例,返回的结果是一致的哦。


二:public String[] split(String regex,int limit):根据匹配给定的正则表达式来拆分此字符串。

此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

该方法第二段的理解:

limit为0时,最后一个返回的数值为空时,会直接去掉
limit为0 或者-1,且最后一个返回的数值不为0时 :返回值均为全部的个数
limit为n时:返回值的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入

案例:

1.limit为0且结尾没有空字符串

        String str="^5678^abc^ccc&12";  
        String[] b = str.split("\\^",0);  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        } 

返回的结果:

==0
5678==1
abc==2
ccc&12==3

2.limit为0且结尾有空字符串

        String str="^5678^abc^ccc&12^";  
        String[] b = str.split("\\^",0);  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        } 

返回的结果:

==0
5678==1
abc==2
ccc&12==3

3.limit不为0且结尾有空字符串

        String str="^5678^abc^ccc&12^";  
        String[] b = str.split("\\^",-1);  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        } 

返回的结果:

==0
5678==1
abc==2
ccc&12==3
==4


4.limit未n且结尾有空字符串

 String str="^5678^abc^ccc&12^";  
        String[] b = str.split("\\^",5);  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        } 
返回的结果:

==0
5678==1
abc==2
ccc&12==3
==4

三:使用split方法应该注意的事项

(1)、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split("."),因为“.”是是正则表达式中的一部分,如果想用该字符本身,字符需要进行转义才能表示它本身,这种字符包括| , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \等;

案例:

1.错误的案例:

        String str="5678^abc";  
        String[] b = str.split("^");  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        } 
 返回的结果为(该结果很明显没有达到我们想到的):

5678^abc==0

2.正确的案例

    String str="5678^abc";  
        String[] b = str.split("\\^");  //注意直接使用 ^ 该字符是正则表达式的一部分,  
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        }  
       
返回的结果:

5678==0
abc==1


(2)、如果在一个字符串中有多个分隔符,可以用“|”作为连字符。

案例:

        String str="acountandaaaor1212";  
        String[] b = str.split("and|or");
        for(int i=0;i<b.length;i++){  
              System.out.println(b[i]+"=="+i);
        } 

返回的结果:

acount==0
aaa==1
1212==2


好了,Java中split的用法我就总结到这里,以后如果有其它关于split的用法,我会补充至该文章。

运行结果为:
"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,分割后的结果为: ""
由此可以得出来:
当字符串只包含分隔符时,返回数组没有元素;
当字符串不包含分隔符时,返回数组只包含一个元素(该字符串本身);
字符串最尾部出现的分隔符可以看成不存在,不影响字符串的分隔;
字符串最前端出现的分隔符将分隔出一个空字符串以及剩下的部分的正常分隔;

asdfasfasf将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。


separator
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
略该选项,返回包含整个字符串的单一元素数组。


limit
可选项。该值用来限制返回数组中的元素个数。

asdfdsfsadfasfsplit 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。


separator
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
略该选项,返回包含整个字符串的单一元素数组。


limit
可选项。该值用来限制返回数组中的元素个数。split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。


separator
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
略该选项,返回包含整个字符串的单一元素数组。


limit
可选项。该值用来限制返回数组中的元素个数。split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
略该选项,返回包含整个字符串的单一元素数组。

limit
可选项。该值用来限制返回数组中的元素个数。


作者: 霜花似雪
链接:http://www.imooc.com/article/15292
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
略该选项,返回包含整个字符串的单一元素数组。

limit
可选项。该值用来限制返回数组中的元素个数。


作者: 霜花似雪
链接:http://www.imooc.com/article/15292
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
  • 6
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值