java中String.split()方法出问题啦

guo_david_wei 2008-10-06 10:16:39
最近碰到了一个问题,很奇怪,始终都没弄明白是怎么回事,请各位大侠帮帮忙
public class Test {
public static void main(String[] args) {
String str = "2,,3,4,3,,,,,";
String[]flag = str.split(",");
System.out.println(flag.length); //为什么是 5 ???
}
}
为什么上面出现的结果会是5呢??它等于是忽略了后面的逗号,但是为什么前面的那个逗号却没忽略???
...全文
235 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
guo_david_wei 2008-10-06
  • 打赏
  • 举报
回复
谢谢楼上的回帖
cuilike 2008-10-06
  • 打赏
  • 举报
回复
split
public String[] split(String regex,
int limit)根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

例如,字符串 "boo:and:foo" 使用这些参数可生成下列结果:

Regex Limit 结果
: 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" }

这种形式的方法调用 str.split(regex, n) 产生与以下表达式完全相同的结果:

Pattern.compile(regex).split(str, n)

参数:
regex - 定界正则表达式
limit - 结果阈值,如上所述
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组
luhao 2008-10-06
  • 打赏
  • 举报
回复
文档里说了
public String[] split(String regex)
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
ZangXT 2008-10-06
  • 打赏
  • 举报
回复

public class Test {
public static void main(String[] args) {
String str = "2,,3,4,3,,,,,";
String[]flag = str.split(",",-1);
System.out.println(flag.length); //为什么是 5 ???
}
}

默认会去掉串后面的""

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧