Как да преброим появата на низ в низ?

Как мога да преброя броя на случаите, в които даден низ се среща в друг низ. Например, това се опитвам да направя в Javascript:

var temp = "This is a string.";
alert(temp.count("is")); //should output '2'
Решение

Знакът g в регулярния израз (съкращение от глобален) означава, че трябва да се търси в целия низ, а не само в първата среща. Това съвпада с is два пъти:

var temp = "Това е низ.";
var count = (temp.match(/is/g) || []).length;
console.log(count);

И ако няма съвпадения, се връща 0:

var temp = "Hello World!";
var count = (temp.match(/is/g) || []).length;
console.log(count);
Коментари (17)
function countInstances(string, word) {
   return string.split(word).length - 1;
}
Коментари (10)

Можете да използвате match, за да дефинирате такава функция:

String.prototype.count = function(search) {
    var m = this.match(new RegExp(search.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "g"));
    return m ? m.length:0;
}
Коментари (2)