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

问题描述

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语句是什么意思,麻烦大家详细解释一下,谢谢。

解决方案

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

相当于如下的代码:

        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);

解决方案二:

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

解决方案三:

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

 i = str.indexOf(newStr,i)+newStr.length();
 这句就是一旦匹配到了,就重置fromIndex为当前i的位置+模式串的长度,作为下一轮的fromIndex.

解决方案四:

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

解决方案五:

可以使用正则表达式匹配

时间: 2025-01-07 16:43:19

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

java 正则表达式-这条java中的替换字符串的正则表达式是什么意思?能不能详细解释一下

问题描述 这条java中的替换字符串的正则表达式是什么意思?能不能详细解释一下 replaceAll("([^u4e00-u9fa5]{1})([^u4e00-u9fa5]{1})", "$2") 解决方案 在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能

统计一个二进制字符串中1的个数的算法

记得在吴军的<数学之美>中有一章讲到布尔代数和搜索引擎的索引.大概是讲通过一个二进制字符串来标识当前关键词在那些文档中出现过.二进制字符串中1的位置就是出现这个词文档的id. 如,一淘 对应一个二进制字符串 1010001.其中在1,5,7三个位置出现了1,说明文档id为1,5,7的文章包含词"一淘".但是在书中没有说如何统计1的个数和位置.现在我补充以下实现算法. 代码如下: #include <iostream> #include <math.h>

Python中使用strip()方法删除字符串中空格的教程

  这篇文章主要介绍了Python中使用strip()方法删除字符串中空格的教程,是Python入门学习中的基础知识,需要的朋友可以参考下 strip()方法返回所有字符从开始及字符串的末尾(默认空格字符)被去除后的字符串的一个副本. 语法 以下是strip()方法的语法: ? 1 str.strip([chars]); 参数 chars -- 字符-从开始或结束的字符串被删除去除. 返回值 此方法返回所有字符从开始及字符串的末尾(默认空格字符)被去除后的字符串的一个副本. 例子 下面的例子显示

c++字符串-C++中如何将输入的字符串中的数字提取出来做加减法

问题描述 C++中如何将输入的字符串中的数字提取出来做加减法 char shu[100]; scanf("%s",shu); int sum; sum+=字符串中的数字 这个应该怎样完成?当我提取了字符串中的数字后,但发现字符串中的数字是以ASIii的形式运算的,这该怎么办? 解决方案 #include "stdafx.h" #include <string.h> void main() { char shu[100]; scanf("%s&q

java-小白问题:JAVA自定义容器类时,一段构造方法不太看得懂,求详细解释

问题描述 小白问题:JAVA自定义容器类时,一段构造方法不太看得懂,求详细解释 我先解释一下题意,现在要设计一个容器类(intArray2),这个容器的本质就是一段数组(暂且只装int值),这个数组可以的索引可以根据使用者传入的数据多少而自动增长,而自动产生新数组覆盖以前的,那么我的疑问就是如下这个....为什么构造方法要像第二图里那么写,而不能照我想的第一张图里的写 我觉的应该如此写(编译通过,运行报错,失败): 正确的写法,为什么要这么写两个: 测试代码,实参传或不传,传什么值,都不影响结果

Javascript中如何用正则表达式替换字符串中的图片地址

今天开发中遇到一个问题:如何替换一段HTML字符串中包含的所有img标签的src值? 开始想到的解决方法是: content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match) {    console.log(match); }); 输出结果是: <img src="http://static.cnblogs.com/images/logo_small.gif"

Delphi中从字符串中提取单词及从字符串中提取汉字的函数

{从字符串中提取单词的函数} procedure StrToWordList(str: string; var List: TStringList); var p: PChar; i: Integer; begin if List = nil then List := TStringList.Create; List.Clear; {去除重复} List.Sorted := True; List.Duplicates := dupIgnore; p := PChar(str); {把单词以外的字

javascript中使用正则表达式实现删除字符串中的前后空格_正则表达式

实例 复制代码 代码如下: <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.replace(/s*$/g,''); alert(str); </script> 实例 代码以及测试代码如下

javascript中使用正则表达式实现删除字符串中的前后空格

实例 复制代码 代码如下: <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.replace(/s*$/g,''); alert(str); </script> 实例 代码以及测试代码如下