split(), split(String regex , int limit)的用法

先看一下区别:

String a="a,b,";
String[] arr=a.split(",");
String[] arr1=a.split(",",-1);
System.out.println("length:"+arr.length+" ;内容:"+Arrays.asList(arr));
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
length:2 ;内容:[a, b]
length:3 ;内容:[a, b, ]

对于split来说若分割符后面是空的,任何内容都没有,此时元素就会少一个,但添加limit参数为-1后,若分隔符后面没有内容也会是一个元素

split(String regex)
根据正则对字符串进行分割,默认调用split(regex,0)的方法,结尾符合分割字符为空不进行分割

//案例1
String a="a,b,c";
String[] arr=a.split(",");
System.out.println("length:"+arr.length+" ;内容:"+Arrays.asList(arr));
//案例2
a="a,b,";
arr=a.split(",");
System.out.println("length:"+arr.length+" ;内容:"+Arrays.asList(arr));
//案例3
a="a,b, ";
arr=a.split(",");
System.out.println("length:"+arr.length+" ;内容:"+Arrays.asList(arr));
length:3 ;内容:[a, b, c]
length:2 ;内容:[a, b]
length:3 ;内容:[a, b,  ]

注意:示例中根据逗号,进行分割,但案例2中逗号后面没有任何内容分割后就只有两个元素了,案例3有一个空格所以空格成为了一个元素,项目中有些时候哪怕逗号后面没有内容,也需要是一个元素,此时可以采用split(“,”,-1)的形式
split(regex):若字符后面都是分隔符,没有内容,则后面的会自动去除;若字符前面都是分隔符,没有内容,不会自动去除内容

split(regex, limit): 若limit<0或limit>0时,若字符后面都是分隔符,没有内容,不会自动去除空内容
如下例:

String ss="a,,";
String sss[] =ss.split(",");//此时数组的长度只有1,后面的空格自动去除了
System.out.println("length:"+sss.length+" ;内容:"+Arrays.asList(sss));
ss = ",,3,,";
sss = ss.split(",");
System.out.println("length:"+sss.length+" ;内容:"+Arrays.asList(sss));//返回数组长度为3,前面空不自动去除

ss = "a,,";
sss = ss.split(",",3);
System.out.println("length:"+sss.length+" ;内容:"+Arrays.asList(sss));//返回长度为3,后面空不会被去掉

结果:

length:1 ;内容:[a]
length:3 ;内容:[, , 3]
length:3 ;内容:[a, , ]

plit(String regex , int limit)
limit参数控制模式应用的次数,因此影响结果数组的长度。

如果 n > 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。 (当 n> 0的时候,str将被分割 n - 1次)

如果 n < 0,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。

如果 n = 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

split(regex)方法,默认调用了split(regex, 0)的方法
String a="boo:and:foo";
String[] arr1=a.split(":",2);
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
arr1=a.split(":",5);
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
arr1=a.split(":",-1);
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
arr1=a.split("o",2);
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
arr1=a.split("o",5);
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
arr1=a.split("o",-1);
System.out.println("length:"+arr1.length+" ;内容:"+Arrays.asList(arr1));
length:2 ;内容:[boo, and:foo]
length:3 ;内容:[boo, and, foo]
length:3 ;内容:[boo, and, foo]
length:2 ;内容:[b, o:and:foo]
length:5 ;内容:[b, , :and:f, , ]
length:5 ;内容:[b, , :and:f, , ]

分析:
1:第一个参数:第二个参数2的时候,字符会被分割1次(n-1),后面的内容不再进行分割,并且当作一个元素进行输出。
2: 第一个参数:第二个参数5的时候,字符最多只会被分割成三个数据,所以只会有三个元素
3:第一个参数o, 第二个参数-1的时候。第零个o到第一个o之间为b,第1个o到第二个o之间为空,第二个o到第三个o之间为:and:f ,第三个o到第四个o之间为空,第四个o到末尾的元素为空

多个分割符
split方法对字符串进行分割,同时也支持对多个字符串进行分割,用 | 连接多个分隔符。

示例:同时对,与@符进行分割

String ss="a,b@c";
String sss[] =ss.split(",|@");
System.out.println("length:"+sss.length+" ;内容:"+Arrays.asList(sss));

转义
split方法中的regex参数对某些字符需要进行转义,例如上面说的连接符 | 以及其他的字符也需要进行转义。所谓转义就是在这些字符前面加双斜杠\
需要转义的字符:.$|()[{^?*+\

String ss="a.b.c";
String sss[] =ss.split("\\.");
System.out.println("length:"+sss.length+" ;内容:"+Arrays.asList(sss));

结果:

length:3 ;内容:[a, b, c]

若分割字符为\则需要写为\\

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

princeAladdin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值