https://www.cnblogs.com/zhang-cb/p/6112616.htmlhtml
今天在对一个String对象进行拆分的时候,老是没法到达预计的结果。呈现数据的时候出现异常,后来debug以后才发现,错误出在String spilt上,因而开始好好研究下这东西,开始对api里的split(String regex, int limit)比较感兴趣,但是就是不理解当limit为负数时的状况
下面是api里的解释:api
limit 参数控制模式应用的次数,所以影响所得数组的长度。若是该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,并且数组的最后一项将包含全部超出最后匹配的定界符的输入。若是 n 为非正,那么模式将被应用尽量多的次数,并且数组能够是任何长度。若是 n 为 0,那么模式将被应用尽量多的次数,数组能够是任何长度,而且结尾空字符串将被丢弃。数组
例如,字符串 "boo:and:foo" 使用这些参数可生成如下结果:debug
Regex Limit 结果htm
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }对象
对limit为负仍是有点不理解,尤为是对 o -2组合,blog
如今我明白了,{ "b", "", ":and:f", "", "" } 第一个“”是由于两个o之间的空数据,第二个也是这个缘由,最后一个是将"boo:and:foo"中最后空字符串也算进去的。字符串
public String[] split(String regex, int limit)string
limit n 大于0,则pattern(模式)应用n - 1 次it
关于String.split(String regex, int limit)String s = “boo:and:foo”
关于String.split(String regex, int limit)s.split(“:”,2)
关于String.split(String regex, int limit)//result is { “boo”, “and:foo” }
limit n 小于0,则pattern(模式)应用无限次
关于String.split(String regex, int limit)String s = “boo:and:foo”
关于String.split(String regex, int limit)s.split(“:”,-2)
关于String.split(String regex, int limit)//result is { “boo”, “and”, “foo” }
limit n 等于0,则pattern(模式)应用无限次而且省略末尾的空字串
关于String.split(String regex, int limit)String s = “boo:and:foo”
关于String.split(String regex, int limit)s.split(“o”, -2)
//result is { “b”, “”, “and:f”, “”, “” }
s.split(“o”, 0)
//result is { “b”, “”, “and:f” }
例子:string “boo:and:foo”