Java 7中的字符串拆分(regex表示非空格)
输出:Java 7中的字符串拆分(regex表示非空格),java,regex,split,Java,Regex,Split,输出: String test="I am preparing for OCPJP"; String[] tokens=test.split("\\S"); System.out.println("length:"+tokens.length); for(String s:tokens) { System.out.print("["+s+"]"); } System.out.println(); 现在我把split(regex)改为split(regex,limit) 输出: length
String test="I am preparing for OCPJP";
String[] tokens=test.split("\\S");
System.out.println("length:"+tokens.length);
for(String s:tokens) {
System.out.print("["+s+"]");
}
System.out.println();
现在我把split(regex)改为split(regex,limit)
输出:
length:16
[][ ][][ ][][][][][][][][][ ][][][ ]
你能告诉我为什么这个结果不同吗?非常感谢 国家:
如果n为零,则将尽可能多次应用该模式,数组可以有任何长度,并且将丢弃尾随的空字符串
国家:
该方法的工作原理类似于使用给定表达式和零限制参数调用双参数split方法。因此,结果数组中不包括尾随的空字符串
而1-arg,no limit重载相当于
0
的限制。对于非零限制,将不再丢弃尾随的空字符串。不再丢弃的这5个尾随空字符串对应于“OCPJP”中的非空格。例如,非零限制的值是多少?@KickButtowski要获得至少21的长度,限制必须为负数(无限制)或者至少21
。谢谢你的回答,但我仍然不明白为什么1-arg拆分方法只为16个拆分部分而不是21个拆分部分丢弃了最后一个字符串OCPJP。@rgetman我有点了解你说的,但我不清楚。您能解释一下吗?@Leometal最后一个OCPJP字符串没有被忽略;最后5个空字符串被丢弃,因此,它们不会显示在返回的数组中。此处的限制值是多少?我投票将此问题作为重复项关闭,但如果您认为重复项无法回答您的问题,请随时通知我有关未涵盖的部分的信息,我将改进重复项或重新打开您的问题。是,这是重复的,但还是要谢谢你们,在我稍后提问之前,我会更仔细地搜索
length:21
[][ ][][ ][][][][][][][][][ ][][][ ][][][][][]