• 在一个字符串里面统计给定字符串的个数


    在一个字符串里面统计给定字符串的个数

    1.拆分法

    1.1 思路分析

    例如字符串为"1java2java3e"以java为拆分字符串的话

    得到的字符串数组 String[] strs={“1”,“2”,“3e”},其长度为3

    而满足条件的字符串个数=2=字符串数组长度-1,因而就有如下结论:

    拆分得到的字符串长度-1=给定字符的个数

    1.2 示例源码

    package Work;
    public class Test05 {
        public static void main(String[] args) {
            System.out.println(countString("1java23javajav", "java"));
            System.out.println(countString("zdhwefyg", "java"));
        }
        public static int countString(String str,String regex){
            //str为原字符串,regex为给定字符串
            return str.split(regex).length-1;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1.3 示例源码运行截图

    在这里插入图片描述

    2.替换统计法

    2.1 思路分析

    设原字符串为str1

    将原字符串中存在的给定字符串替换成""(空串),得到一个新字符串str2;

    给定字符串的数量=(str1-str2)/给定字符串的长度

    2.2 示例源码

    package Work;
    public class Test05 {
        public static void main(String[] args) {
            System.out.println(countString("java1java23javajav", "java"));
            System.out.println(countString("zdhwefyg", "java"));
        }
        public static int countString(String str,String regex){
            //str为原字符串,regex为给定字符串
            return (str.length()-str.replace(regex,"").length())/regex.length();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.3 示例源码运行截图

    在这里插入图片描述

    3.下标法

    3.1 思路分析

    通过indexOf找到出现给定字符串的第一次出现位置的下标index,

    若为-1,统计结果为0

    若不为-1,就进入循环(循环终止条件为indexOf得到的结果为-1).此时count数量需要加1

    再从找到的字符串中最后一个字符的后一位(index+regex.length)开始寻找是否有给定的字符串,若有,则不退出循环,count继续加1,然后继续往后找(找的位置依然和前面是同一个规律),直到后面没有给定字符串了,那么就结束循环,最终返回的就是count的数量

    3.2 示例源码

    package Work;
    public class Test05 {
        public static void main(String[] args) {
            System.out.println(countString("java1java23javajav", "java"));
            System.out.println(countString("zdhwefyg", "java"));
        }
        public static int countString(String str,String regex){
            //str为原字符串,regex为给定字符串
            int index=str.indexOf(regex);
            //第一次找原来字符串有没有给定字符串,如果为-1(代表没有),那就没有必要往后去找了,如果有就进入循环去找
            int count=0;
            while (index!=-1){
                //进入循环就count+1
                count++;
                //然后每次都需要更新index的值,因为要从找到字符串的最后一个位置的后一位开始找
                //没有必要再去从前往后找了
                index=str.indexOf(regex,index+regex.length());
            }
            return  count;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    3.3 示例源码运行截图

    在这里插入图片描述

    4.下标+截取子串法

    4.1 分析

    通过indexOf找到出现给定字符串的第一次出现位置的下标index,

    如果为-1,统计结果就为0,没有必要再去往后截取了

    如果不为-1,就进入循环里面去找(循环成立的条件就是不为-1),

    循环每成立一次count+1,然后成立后你需要从找到的给定字符串的最后一位字符的后一位开始往后截取(因为前面已经比较完了,没有截取的必要了)

    截取完后需要获取截取后的子串中的给定字符串的下标,若不为-1就继续循环,否则

    退出循环,然后一直这样截取然后加上获得下标下去,直到得到的下标为-1,就退出循环

    4.2 示例源码

    package Work;
    public class Test05 {
        public static void main(String[] args) {
            System.out.println(countString("j2ava1java23javajav", "java"));
            System.out.println(countString("zdhwefyg", "java"));
        }
        public static int countString(String str,String regex){
            //str为原字符串,regex为给定字符串
            int index=str.indexOf(regex);
            //第一次找原来字符串有没有给定字符串,如果为-1(代表没有),那就没有必要往后去找了,如果有就进入循环去找
            int count=0;
            while (index!=-1){
                //进入循环就count+1
                count++;
               //每弄一次都需要截取+获取截取后子串中给定字符串的位置
                str=str.substring(index+regex.length());
                //indexOf默认还是从0开始,只不过是从字符串的第一位开始而已
                index=str.indexOf(regex);
            }
            return  count;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    4.3 示例源码运行截图

    在这里插入图片描述

  • 相关阅读:
    有效学习,通过PMP考试
    【穿透科技】P2P穿透模块介绍
    光纤振动传感器在海底光缆安全防护的应用
    【HTML】表格标签,语义化
    “人生苦短,我用Python“——Web测试
    自动化测试框架Pytest(四) ——数据驱动
    如何用Python自动爬取全国30+城市地铁图数据?
    Provide 和 Inject 的用法
    C语言 开关灯实验
    运动神经元如何做好锻炼康复
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/126003139