Java基础: String 的 split()

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

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

 

在这个例子中,调用split(String regex)方法,其实等价调用它的过载方法split(String regex, int limit),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");

 

 

 

©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页