计算模式在字符串中出现的次数

时间:2011-11-03 16:48:09

标签: javascript string

使用JS计算字符串在字符串中出现的次数的最佳方法是什么?

例如:

count("fat math cat", "at") returns 3

6 个答案:

答案 0 :(得分:6)

使用正则表达式,然后可以从返回的数组中找到匹配数。这是使用正则表达式的天真方法。

'fat cat'.match(/at/g).length

要防止字符串不匹配,请使用:

( 'fat cat'.match(/at/g) || [] ).length

答案 1 :(得分:1)

下面:

function count( string, substring ) {
    var result = string.match( RegExp( '(' + substring + ')', 'g' ) ); 
    return result ? result.length : 0;
}

答案 2 :(得分:0)

可以在循环中使用indexOf

function count(haystack, needle) {
    var count = 0;
    var idx = -1;
    haystack.indexOf(needle, idx + 1);
    while (idx != -1) {
        count++;
        idx = haystack.indexOf(needle, idx + 1);
    }
    return count;
}

答案 3 :(得分:0)

不要使用它,它过于复杂:

function count(sample, searchTerm) {
  if(sample == null || searchTerm == null) {
    return 0;
  }

  if(sample.indexOf(searchTerm) == -1) {
    return 0;
  }

  return count(sample.substring(sample.indexOf(searchTerm)+searchTerm.length), searchTerm)+1;
}

答案 4 :(得分:0)

function count(str,ma){
 var a = new RegExp(ma,'g'); // Create a RegExp that searches for the text ma globally
 return str.match(a).length; //Return the length of the array of matches
}

然后按照你的例子中的方式调用它。 count('fat math cat','at');

答案 5 :(得分:0)

您也可以使用split

function getCount(str,d) {
    return str.split(d).length - 1;
}
getCount("fat math cat", "at"); // return 3