标签:https bool cut test word turn pre pat att
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 bool cut test word turn pre pat att
原文地址:https://www.cnblogs.com/ConstXiong/p/12164934.html