黑马程序员技术交流社区

标题: 字符串截取问题 [打印本页]

作者: 陈鹏83    时间: 2014-6-23 10:41
标题: 字符串截取问题
视频里的一个题目,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.   }
复制代码

作者: 001可望成功    时间: 2014-6-23 13:37
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()是为了把相同的这段截掉,以便后续判断
作者: 001可望成功    时间: 2014-6-23 13:38
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()是为了把相同的这段截掉,以便后续判断
作者: 踏雪风暴    时间: 2014-6-23 14:41
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 自加 的结果


作者: 陈鹏83    时间: 2014-6-25 07:44
踏雪风暴 发表于 2014-6-23 14:41
str = str.substring(index+key.length());   
以字符串  :str = ”123445346“ 为例,key="34"
函数功能 ...

明白了 ,感谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2