为了账号安全,请及时绑定邮箱和手机立即绑定

对于在Java中split(String sign,int limit)的limit有点疑问,求解!

对于在Java中split(String sign,int limit)的limit有点疑问,求解!

暮色呼如 2022-03-31 13:10:10
程序如下:public class Boolean {static int times=3;public static void main(String[] args) {String str=new String("abc,def,ghi,gkl");String[]newstr2=str.split(",",3);for(int j=0;j<newstr2.length;j++){System.out.println(newstr2[j]);}}}运行结果为:abcdefghi,gkl可是limit分割次数为3的话,结果不应该是abcdefghigkl吗?因为切割次数为3次啊……求大神解答!!在线等!
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

这个api文档上有详细的描述,分割后得到的数组最大长度不会超过limit的值,因此你的代码中limit=3,所以split的结果数组长度最大为3
API内容:

split
public String[] split(String regex,
int limit)

根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用
n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n
为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为
0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
例如,字符串 "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 - 结果阈值,如上所述
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException




查看完整回答
反对 回复 2022-04-07
?
大话西游666

TA贡献1817条经验 获得超14个赞

3是代表返回元素的个数,不是分割的次数

查看完整回答
反对 回复 2022-04-07
  • 2 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号