关于split(String regex,int limit)方法在分割字符串时返回的数组的规则问题
在官方的API文档中,针对public String[] split(String regex,int limit)方法给出了如下的例子:
The string "boo:and:foo", for example, yields the following results with these parameters:
Regex Limit Result
: 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" }
请问老师问什么字符串"boo:and:foo"当以英文字母o分割时,且limit非零时,前面两个oo作为分割符分出来了一个“”空字符串,而后面两个oo为什么分出来两个“”空字符串啊?
正在回答
同学你好,不要着急哦~解决问题也是学习的过程哦~
第二步and:f左右边都不加双引号哦~
现在老师进行分步,讲解:
1、首先将整个字符串"boo:and:foo",进行拆分,o转换为“”空字符串,具体如下:
2、然后将转换后的字符串,每个双引号中的一个引号从前到后,两两配对,也就是最开始b前面的那一个引号“ 与第一个o转换为双引号的第一个引号,进行配对,依次类推,具体如下:
因为第一个o的第一个引号,与前面的b链接,第二个o的最后一个引号,与:and:f最后的引号,进行拼接,所以中间剩余一个“”空字符串。
而f后面的两个o,f后面的第一个o转换的双引号“”,中的第一个引号,与:and:f的内容进行配对,则第二个引号与f后面的第二个o转换的双引号的第一个一个引号进行配对,f后面的第二个o最后一个引号,再与整个"boo:and:foo"字符串的最后一个引号进行配对,所以是两个双引号。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,同学的例子中,是根据匹配给定的正则表达式o来拆分此字符串,
limit 参数通过控制分割次数从而影响分割结果
如果传入 n(n>0) 那么字符串最多被分割 n-1 次,分割得到数组长度最大是 n
如果 n <0 将会以最大分割次数分割
如果 n = 0 将会以最大分割次数分割,但是分割结果会舍弃末位的空串
这里可以这样理解:
boo:and:foo 这个字符串用"o" 分隔的话,在字符串中出现的“o ”的位置之间都要使用空字符串进行分割“”,可以看成由这么几个字符串组成的:
"b" "o" "" "o" ":and:f" "o" "" "o" ""
最后一个""主要是因为到字符串结尾了,字符串分隔的话最后是有一个元素的,所以split添加了一个空字符串。
所以limit>0,还是小于0,将o拆分后,就是{ "b", "", ":and:f", "", "" } 而limit=0,会舍弃末位的空串,所以为{ "b", "", ":and:f" }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星