Javascript:计算第一个字符串在第二个字符串中出现的次数

时间:2018-03-07 07:01:31

标签: javascript

尝试了几种不同的方式,每次都遇到问题。

我的初步方法:

function solve(a,b) {

var re = new RegExp(b,"g");
var res = a.match(re);
console.log(res);

}

solve("zaz","zazapulz") //returns null

这种方法也是如此:

function solve(a,b) {

String.prototype.count=function(c) { 
  var result = 0, i = 0;
  for(i;i<this.length;i++)if(this[i]==c)result++;
  return result;
};

console.log(a.count(b)); 

}


solve("zaz","zazapulz") //returns 0

3 个答案:

答案 0 :(得分:3)

使用split

function solve(a,b) {
   return b.split( a ).length - 1;
}

<强>演示

function solve(a, b) {
  return b.split(a).length - 1;
}

console.log(solve("zaz", "zazapulz"))

注意

  • 请注意,此答案假定匹配不重叠。

如果还需要考虑重叠,请尝试使用此递归方法

var func = function( master, input, count )
{
    count = count || 0;
    var indexOf = master.indexOf( input );
    if ( indexOf == -1 )
    {
       return count;
    }
    else
    {
       return func( master.substring( indexOf + 1 ), input, ++count );     
    }
};
console.log( func( "zzz", "zz" ) );

答案 1 :(得分:2)

function solve(a,b) {

    var re = new RegExp(a,"g");  // ---+
                                 //    | switch variable a | b
    var res = b.match(re);       // ---+
    console.log(res);
}

solve("zaz","zazapulz")          // logs ["zaz"]

答案 2 :(得分:0)

如果您想计算包含重叠的匹配项,您可以迭代使用String.prototype.indexOf()

function solve (a, b) {
  var count = 0
  var from = 0
  
  while ((from = b.indexOf(a, from) + 1) !== 0) {
    count++
  }
  
  console.log(count)
}

solve('zaz', 'zazapulz')
solve('zaz', 'zazazaz')