码迷,mamicode.com
首页 > 其他好文 > 详细

关于字符串的split方法的一些见解

时间:2014-09-23 17:26:35      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:os   ar   for   sp   问题   c   代码   工作   r   

同事今天向笔者提了一个字符串分割的问题,相信许多新手甚至参加工作数年的老鸟会感到奇怪,废话少说直接上实例代码。。。

String source = "1,2,,3,";
String[] strArr = source.split(",");
for (String str : strArr) {
    System.out.println("[" + str + "]");
}

运行上面一段代码,在控制台可以得到以下输出:

[1]
[2]
[]
[3]

此时,只想问下James Gosling,我的最后一个空字符串去哪了?

JDK的API上面对split方法有一段这样的描述:该方法调用的是split(regex, 0),而对split(regex, limit)的描述是:通过该方法返回的数组包含该字符串的每个子串,这些子串通过另一个指定的字符表达式或该字符串末尾终止。子串在数组中的顺序是它们在字符串中出现的顺序。如果表达式没有匹配输入字符串的任意部分,那么结果数组只有一个元素,及此字符串。limit参数控制模式被应用的次数,因此影响结果数组的长度。如果limit大于0,那么模式将最多被应用limit-1次,数组的长度不会大于limit,数组的最后一项将包含输入没有匹配的部分。如果limit是非正数,那么模式将尽可能的应用多次而数组会是任意长度。如果limit是0,尾随的空字符串会被丢弃。因此,如果你想要保留尾随的空串,第二个参数最好是负数。

将之前的代码修改为:

String source = "1,2,,3,";
String[] strArr = source.split(",", -1);
for (String str : strArr) {
    System.out.println("[" + str + "]");
}

再次运行,得到如下结果:

[1]
[2]
[]
[3]
[]

关于字符串的split方法的一些见解

标签:os   ar   for   sp   问题   c   代码   工作   r   

原文地址:http://my.oschina.net/u/2000201/blog/317342

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!