Java字符串split方法的小陷阱

今天在写一个Java字符串切分程序时,发现切分后的计数一直有问题,调了半天才找到原因。。。

下面先来看一个问题:有字符串str=“string split test” ,使用String类的split方法,根据空格切分后的字符串数组有多少个元素?我们可以用下面的程序来测试:

 

String str = "string split test";
String[] result = str.split(" ");
System.out.println("Result size: " + result.length);
for (String s : result)
System.out.println(s);

程序输出为:

 

Result size: 3
string
split
test

嗯,和我们想的一样,原来的字符串被空格切分成了3个新的字符串。

 

再来看一个问题:有字符串str=“” (空字符串),使用String类的split方法,根据空格切分后的字符串数组有多少个元素?

还是用程序来测试:

str = "";
result = str.split(" ");   (或者用, 进行切分)
System.out.println("Result size: " + result.length);
for (String s : result)
System.out.println(s);

 

程序输出为:

Result size: 1

这里居然是1,而不是我之前认为的0,里面的元素是与原字符串相同的空字符串。

仔细想想,其实是有道理的。无论原字符串的内容是什么,通过split切分后,如果原字符串中没有出现切分定界符,那么切分结果就返回以原字符串为原始的字符串数组;如果原字符串中有切分定界符,则从定界符处将原字符串断开,将生成的新字符串按顺序以数组的形式返回。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值