尝试了几种不同的方式,每次都遇到问题。
我的初步方法:
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
答案 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')