统计一段长字符串中某字符串的出现次数

  • 截取字符串统计字符串出现次数
  • 通过替换字符串,统计字符串出现次数
  • 通过正则表达式,统计字符串出现次数
package constxiong.interview;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 统计一段长字符串中某字符串的出现次数
 * @author ConstXiong
 * @date 2019-11-13 11:01:22
 */
public class TestCountWordTimesInText {

    public static void main(String[] args) {
        String text = "统计一CX段长CX字符串中某字符串的出C现X次cx数";
        String word = "CX";
        System.out.println(countWordTimesByCutString(text, word));
        System.out.println(countWordTimesByReplace(text, word));
        System.out.println(countWordTimesByRegex(text, word));//正则匹配,需要注通配符的使用对结果的影响
    }

    /**
     * 截取字符串统计字符串出现次数
     * @param text
     * @param word
     * @return
     */
    public static int countWordTimesByCutString(String text, String word) {
        int times = 0;
        if (!isEmpty(text) && !isEmpty(word)) {
            String subText = text;
            int index = -1;
            int wordLength = word.length();
            while (subText.length() >= wordLength && (index = subText.indexOf(word)) > -1) {
                subText = subText.substring(index + wordLength);
                times++;
            }
        }
        return times;
    }

    /**
     * 通过替换字符串,统计字符串出现次数
     * @param text
     * @param word
     * @return
     */
    public static int countWordTimesByReplace(String text, String word) {
        int times = 0;
        if (!isEmpty(text) && !isEmpty(word)) {
            times = (text.length() - text.replace(word, "").length()) / word.length();
        }
        return times;
    }

    /**
     * 通过正则表达式,统计字符串出现次数
     * @param text
     * @param word
     * @return
     */
    public static int countWordTimesByRegex(String text, String word) {
        int times = 0;
        if (!isEmpty(text) && !isEmpty(word)) {
            Pattern p = Pattern.compile(word);
            Matcher m = p.matcher(text);
            while (m.find()) {
                times++;
            }
        }
        return times;
    }

    /**
     * 字符串是否为空
     * @param str
     * @return
     */
    private static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }

}

原文链接


原文地址:https://www.cnblogs.com/ConstXiong/p/12164934.html

时间: 2024-11-08 23:54:44

统计一段长字符串中某字符串的出现次数的相关文章

Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例

1. 首先我们看看统计字符串中每个字符出现的次数的案例图解:

黑马程序员——统计一个字符串中各个字符出现的次数

统计一个字符串中各个字符出现的次数 import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo { //统计一个字符串中相应字符出现的次数 public static void main(String[] args) { // String s = "aagfagdlkerjgavpofjmvglk我是你的"; //调用自定义方法来 统计相应字符出

Java编程练习之判断Java文件名是否正确,判断邮箱格式是否正确和统计指定字符串中某字符现的次数

一判断Java文件名是否正确,判断邮箱格式是否正确 功能:判断Java文件名是否正确,判断邮箱格式是否正确.其中:合法的文件名应该以.java结尾:合法的邮箱名 中至少要包含 "@" , 并要求 "@" 在 "." 之前. 练习代码: public class Test { public static void main(String[] args) { //Java文件名 String fileName = "HelloWorld.j

用python统计list中各元素出现的次数(同理统计字符串中各字符出现的次数)

统计list中各元素出现的次数,下面的方法也适用于统计字符串中各字符出现的次数 1.用字典的形式来处理 a = "abhcjdjje" a_dict = {}for i in a: a_dict[i] = a.count(i)print(a_dict) 2.用count函数直接打印出来 L = [2,4,5,6,2,6,0,4] for i in L: print("%d的次数:%d"%(i,L.count(i))) 3.用collections的Counter函数

js获取一个字符串中指定字符串第n次出现的位置

1.JS获取一个字符串中指定字符串第n次出现的位置 了解类似的获取字符位置的方法: 1.1 charAt() 获取字符串指定位置的字符 用法:strObj是字符串对象,index是指定的位置,(位置从0开始数) strObj.charAt(index) 1.2 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置 用法:stringObject是字符串对象,searchvalue是指定的字符串值,fromindex(可有可无)指定开始匹配字符串值的位置,若无,表示从0位置开始

寻找字符串中出现字符最多的次数,出现次数最多的字符,出现次数最多的字符的索引

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <link rel="stylesheet" href="css.css"> <script src="js.js"></script>

删除string类型字符串中指定字符串段

1.实现背景 在插入list行时用邮件的MessageID给对应行命名. 在回复全部邮件时,收件人变为之前收件人中出去“自己”同时加入之前发件人,抄送人还是之前的抄送人,密送人不用管,直接不用带. 在“回复全部”按钮响应函数里面 CListUI* pList = static_cast<CListUI*>(m_PaintManager.FindControl(_T("middle_comlumn_header1")));//拿到list控件指针            int

如何用Python统计《论语》中每个字的出现次数?10行代码搞定--用计算机学国学

编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面是跨了学科听课,内容引人入胜,主要还是我懂得太少了,哈!我记得当时讲座的主题是有关孔子与齐鲁大地的关系,也正是那场讲座让我下决心跨学院选修了<中国古代思想文化史研究>,才让我对于诸子百家思想有了更深的认识,教授们轮番上阵,让我们学习到我们中华民族先贤智慧.也认识了历史学和中国哲学专业的同学,其中还

统计在给定的字符串中模板串出现的次数

你可能第一反应就是KMP算法,但是我们在这篇文章里面将它朴素实现. 假设给定的字符串为字符串a,模板串为字符串b 在字符串a的每一个字符的位置开始,来用字符串b一位一位去对,如果对不上了,就break,从a的下一个字符的位置开始一位一位对. 完整代码如下: 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 string a,b; 5 int ans=0; 6 int main() 7 { 8 cin&g