`
mmdev
  • 浏览: 12911621 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

String: split()

 
阅读更多

Jdk的api文档中,描述split方法很详细,但是不仔细研究一下,隐藏的信息是无法显现出来的。

一个实例,分解字符串"boo:and:foo"

在这个例子中,调用split(Stringregex)方法,其实等价调用它的过载方法split(Stringregex,intlimit),limint=0,打印结果:

分析一下,得到结果的原因,刚开始我以为结果是["b",":and:f"],但是事与愿违。在分析结果之前需要理解这样一句话:

"boo:and:foo"

第一次用o分隔取得"b" 和 "o:and:foo"

第二次用o分隔取得"" 和 ":and:foo"

第三次用o分隔取得":and:f"和"o"

第四次用o分隔取得"" 和 "" 因为"o"这个分隔了之后可以获取到左右两个空字符串,即忽略掉后面的空字符串

那么,结果是"b" "" ":and:f"

修改上面例子,代码如下:

运行结果,是这样的:

结合api,分析结果,靠谱一点,一句话:

ok,这次没有去掉末尾的两个空字符串。再看一个实例,将n改为正数1,如下:

结果是“boo:and:foo”,yes,没有分解,why???

因为只执行n-1次 所以1-1 =0 一次都不分隔得到原始字符串。改为其它正数,结果在jdk的api上已经给出:

补充一句:limit=9,在此字符串中与limit=5时是一样的效果。

转载一篇:


Java中Split函数的用法技巧

来源:http://www.cnblogs.com/liubiqu/archive/2008/08/14/1267867.html

在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧。如执行:

出来的结果是:

奇怪吧,不过注意看一下API说明还是知道原因的。

所以正常的写法是这样的:

1、如果用“.”作为分隔的话,必须是如下写法:String.split("//."),这样才能正确的分隔开,不能用String.split(".");

2、如果用“|”作为分隔的话,必须是如下写法:String.split("//|"),这样才能正确的分隔开,不能用String.split("|");

“.”和“|”都是转义字符,必须得加"//";

3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics