String类中split方法

今天一个初学java朋友问我String中的split方法的用法,我开始挺纳闷的,觉得他自己看下API不比问我强多了。然而他说查了之后没看懂。于是我就自己看了一下,咋一看觉得API确实讲的不太适合初学者理解,于是自己亲自动手写了代码用了一下这个方法,下面是我自己的理解:

代码如下:

			String a = "abc110def110ghi11011";
			String reg ="1";
			String[] ary = a.split(reg, 5);
			System.out.println(Arrays.toString(ary) );
			for(int i = 0;i<ary.length;i++){
				System.out.println(i+1+":"+ary[i]);
			}</span>

将字符串a匹配内容为“1”的字符串来拆分成字符串数组。按照官方的API,split(String reg, int n)中,当n为正整数时,与reg字符串进行匹配拆分的次数是n-1次,如果没有匹配的,则得到的字符串数组只有一个元素,就是原来的字符串。以上代码运行结果如下:

[abc, , 0def, , 0ghi11011]
1:abc
2:
3:0def
4:
5:0ghi11011
因为n的值为5,所以进行了4次匹配拆分,因为第一次匹配拆分和第二次匹配拆分之间,a没有子字符串,所以数组的第二个元素为空字符串,同理第4个数组元素也是空字符串。


如过n=10,则可以进行9次匹配拆分,但字符串a符合匹配规则的子字符串“1”只有8个,所以将进行8次拆分,得到9个数组元素,第八次拆分时,因为后面没有子字符串了,所以第九个元素是空字符串。

[abc, , 0def, , 0ghi, , 0, , ]
1:abc
2:
3:0def
4:
5:0ghi
6:
7:0
8:
9:

当结果为负数时,匹配拆分的次数将不受限制,按照“1”来匹配,可以拆分八次,拆分成9个字符串,下面是将第一行代码改成String[] ary = a.split(reg, -1);执行后的结果:

[abc, , 0def, , 0ghi, , 0, , ]
1:abc
2:
3:0def
4:
5:0ghi
6:
7:0
8:
9:
 
当n的值为0时, 匹配拆分的次数和为负数时同样不受限制,但得到的数组会抛弃最后一个非空字符串元素后的所有空字符串元素,输出结果如下:

[abc, , 0def, , 0ghi, , 0]
1:abc
2:
3:0def
4:
5:0ghi
6:
7:0

以上是split(String reg,int n)的用法,split还有一个重载的方法split(String reg),效果相当于第一个方法中参数n=0的效果。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值