Ako spočítať výskyt reťazca v reťazci?

Ako môžem spočítať počet výskytov určitého reťazca v inom reťazci. Napríklad toto sa snažím urobiť v Javascripte:

var temp = "This is a string.";
alert(temp.count("is")); //should output '2'
Riešenie

Znak g v regulárnom výraze (skratka pre global) hovorí, že sa má prehľadávať celý reťazec, a nie iba prvý výskyt. Toto sa zhoduje s výrazom is dvakrát:

-- begin snippet: js hide: false console: true babel: false -->

var temp = "Toto je reťazec.";
var count = (temp.match(/is/g) || []).length;
console.log(count);

A ak neexistuje žiadna zhoda, vráti sa 0:

var temp = "Hello World!";
var count = (temp.match(/is/g) || []).length;
console.log(count);
Komentáre (17)
function countInstances(string, word) {
   return string.split(word).length - 1;
}
Komentáre (10)

Na definovanie takejto funkcie môžete použiť match:

String.prototype.count = function(search) {
    var m = this.match(new RegExp(search.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "g"));
    return m ? m.length:0;
}
Komentáre (2)