qq_31930741
从容_
采纳率34.8%
2016-03-29 16:37 浏览 3.4k

java中需要统计子串在字符串中出现多少次。 麻烦大家帮我详细解释一下那串代码是什么意思。谢谢了!

String str="abcjavadefjavadddjava";
String newStr="java";
int count=0;
int i=0;//出现的下标
while(str.indexOf(newStr,i)>=0 && i<=str.length()){
count++;
i = str.indexOf(newStr,i)+newStr.length();
}
System.out.println(count);

    就是不知道那个while语句是什么意思,麻烦大家详细解释一下,谢谢。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-03-29 17:01

    简单来说,用的最呆的方法,从头到尾遍历原始字符串,看有没有待匹配的字符串

    相当于如下的代码:

            String str="abcjavadefjavadddjava";
            String newStr="java";
            int count=0;
            int i = 0;
            while (i <= str.length())
            {
                if (str.indexOf(newStr,i)>=0)
                {
                    count++;
                    i = str.indexOf(newStr,i)+newStr.length();
                }
                else
                {
                    break;
                }
            }
            System.out.println(count);
    
    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-03-29 17:04

    可能你看不懂的是 字符串1.indexOf(字符串2, n),它的作用是返回字符串2在字符串的n~最大长度区间内第一个匹配开始的下标,如果返回-1,表示没有匹配到。

    点赞 1 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-03-29 23:17

    循环操作的条件是能够找到下一个匹配的下标,indexOf(模式串,fromIndex)就是从fromIndex开始搜索模式串在原串中的位置。
    如果找到就返回匹配的下标,没有就返回-1.

     i = str.indexOf(newStr,i)+newStr.length();
     这句就是一旦匹配到了,就重置fromIndex为当前i的位置+模式串的长度,作为下一轮的fromIndex.
    
    点赞 评论 复制链接分享
  • lxk_1993 103style 2016-03-30 00:51

    str.indexOf(newStr,i)>=0 判断是str中是否含有newStr子串。
    i<=str.length() 判断索引位置 要在 str的长度里面。

    点赞 评论 复制链接分享
  • highstar1201 comingwinter 2016-03-30 02:36

    可以使用正则表达式匹配

    点赞 评论 复制链接分享

相关推荐