A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈鹏83 中级黑马   /  2014-6-23 10:41  /  1159 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频里的一个题目,str.substring(index+key.length())  这里为什么要加  key.length()呢?
有点不明白,求解释

  1. //  函数功能是根据 查找 str串中 key串的数量
  2.   public static int  getSubCount(String str,String key)
  3.   {
  4.     int count = 0;
  5.     int index = 0;
  6.    
  7.     while((index=str.indexOf(key))!=-1)
  8.     {
  9.         sop("str="+str);
  10.         str = str.substring(index+key.length());      
  11.         count++;
  12.       
  13.     }
  14.     return count;   
  15.   }
复制代码

4 个回复

倒序浏览
public int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引。例如str = ”12345“,key = ”34“,index=str.indexOf(key)后index为2,如果不加key.length(),str = str.substring(index)执行后str永远为345,这样就会出现死循环,加上key.length()是为了把相同的这段截掉,以便后续判断
回复 使用道具 举报
public int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引。
例如str = ”12345“,key = ”34“,index=str.indexOf(key)后index为2,如果不加key.length(),str = str.substring(index)执行后str永远为345,这样就会出现死循环,加上key.length()是为了把相同的这段截掉,以便后续判断
回复 使用道具 举报 1 0
str = str.substring(index+key.length());   
以字符串  :str = ”123445346“ 为例,key="34"
函数功能是根据 查找 str串中 key串的数量,当然目测  key 数量为 2
为什么要加  key.length(),
第一次循环中:当然是为了获取一个除去第一次出现key串的str串,后count 自加
str = str.substring(index+key.length());     index是key串在str  串中第一次出现的地址,
key.length()  为key串 的长度 , 根据substring(int beginIndex, int endIndex)  返回一个新字符串,此字符串为截取地址0---第一个key串最后一个位置地址


再进入第二次循环,依次如此,通过count 自加 的结果

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
踏雪风暴 发表于 2014-6-23 14:41
str = str.substring(index+key.length());   
以字符串  :str = ”123445346“ 为例,key="34"
函数功能 ...

明白了 ,感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马