Java 一个字符串在另外一个字符串出现次数

统计一个字符串在另外一个字符串出现次数

 

代码如下:

package me.chunsheng.javatest;

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

/**
 * Created by wei_spring on 16/10/11.
 * <p>
 * 统计一个字符串在另外一个字符串出现的次数
 * 正则匹配的方法,前提字符串不是特殊字符串
 * eg:finder("adadadadauuada", "ada") 这样会统计不准确的.
 * 另外一个遍历的解决了上面那种情况.
 * 两者时间如下(纳秒为单位): 正则明显耗时,正则本就不是统计用的!!!
 * finder:3
 * finderTime:1579549
 * getCount:4
 * getCountTime:34506
 */
public class SubStringCount {

    public static void main(String[] args) {

        long current1 = System.nanoTime();
        System.out.println("finder:" + finder("adadadadauuada", "ada"));
        System.out.println("finderTime:" + (System.nanoTime() - current1));
        long current2 = System.nanoTime();
        System.out.println("getCount:" + getCount("adadadadauuada", "ada"));
        System.out.println("getCountTime:" + (System.nanoTime() - current2));

    }

    public static int getCount(String source, String sub) {
        int count = 0;
        int length = source.length() - sub.length();
        for (int i = 0; i < length; i++) {
            String sourceBak = source.substring(i, i + sub.length());
            int index = sourceBak.indexOf(sub);
            if (index != -1) {
                count++;
            }
        }
        return count;
    }

    public static int finder(String source, String regexStr) {
        String regex = "[a-zA-Z]+";
        if (regexStr != null && !regexStr.equals("")) {
            regex = regexStr;
        }
        Pattern expression = Pattern.compile(regex);
        Matcher matcher = expression.matcher(source);

        int n = 0;
        while (matcher.find()) {
            n++;
        }
        return n;
    }
}

 

时间: 2024-10-23 13:50:01

Java 一个字符串在另外一个字符串出现次数的相关文章

java的action里字符串中含有一个“=”,传到前台后,变为“\u003d”

问题描述 java的action里字符串中含有一个"=",传到前台后,变为"u003d",为什么会变成这样的字符呢? 问题补充:7454103 写道 解决方案 前台?<html> <head> <title>My JSP 'test.jsp' starting page</title> <script language="javascript"> var str="u003d&

把一个字符插入到一个升序排列的字符串中

namespace Tools.Module   {       public class Tools      {            public Tools()           {            }             public static string GetStrFromStr(string src,int Index)          {                if(src.IndexOf(",")==0) src = src.Remove

c++-帮忙看看这个代码为什么会超时,有没有什么修改办法(一个字符串在另一个字符串中出现的次数)

问题描述 帮忙看看这个代码为什么会超时,有没有什么修改办法(一个字符串在另一个字符串中出现的次数) #include #include using namespace std; int main() { char str1[100]; char str2[100]; while (1) { cin>>str1; cin>>str2; int a=strlen(str1); int b=strlen(str2); int j,i,count=0; for(j=0;j<a;j++

从字符串中取一个字符作为数组元素

从字符串中取一个字符作为数组元素 public class mainclass {   public static void main(string[] arg) {     string text = "to be or not to be";        // define a string     byte[] textarray = text.getbytes();         for(byte b: textarray){       system.out.printl

c c++-写一个函数判断输入的字符串是否是一个点分十进制格式的IP地址

问题描述 写一个函数判断输入的字符串是否是一个点分十进制格式的IP地址 写一个函数判断输入的字符串是否是一个点分十进制格式的IP地址 解决方案 #include ""winsock2.h""#pragma comment(libws2_32.lib"")BOOL CheckIsValidIP(const char* sIP){ unsigned long ulAddress = inet_addr(sIP); if (INADDR_NONE ==

得到一个字符串在另一个字符串当中出现几次的函数

函数|字符串 GetRepeatTimes(TheChar,TheString)得到一个字符串在另一个字符串当中出现几次的函数() 例子:response.writeGetRepeatTimes("w","")response.writeGetRepeatTimes("ww","wwwww") 函数代码: FunctionGetRepeatTimes(TheChar,TheString) GetRepeatTimes=(len

php判断字符串在另一个字符串位置的方法

 这篇文章主要介绍了php判断字符串在另一个字符串位置的方法,需要的朋友可以参考下    代码如下: $email='user@exe.com';        //定义字符串 $result=strstr($email,'@');         //返回子字符串 echo $result;      strstr()函数搜索一个字符串在另一个字符串中的第一次出现.   该函数返回字符串的其余部分(从匹配点).如果未找到所搜索的字符串,则返回 false.   语法      代码如下:  

一个老问题,颠倒字符串,想看看专家推荐的做法

问题描述 一个老问题,颠倒字符串,想看看专家推荐的做法 一个老问题,颠倒字符串,想看看专家推荐的做法谢谢 解决方案 http://codepad.org/j7GOwAc5 Output: !dlrow olleh 调试通过 解决方案二: 基本都是这样char *revstr(char *str size_t len){ char *start = str;char *end = str + len - 1;char ch;if (str != NULL){ while (start < end)

c语言-输入一个错位敲出的字符串,输出打字员本来想打出的句子

问题描述 输入一个错位敲出的字符串,输出打字员本来想打出的句子 #include char *s = ""`1234567890-=QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM./"";int main(){ int i c; while((c = getchar()) != EOF) { for(i = 1; s[i] && s[i] != c; i ++); if(s[i]) putchar(s[i-1]); else putch