Wie zählt man das Auftreten von Zeichenfolgen in einer Zeichenkette?

Wie kann ich die Anzahl der Vorkommen einer bestimmten Zeichenfolge in einer anderen Zeichenfolge zählen. Das ist zum Beispiel das, was ich versuche, in Javascript zu tun:

var temp = "This is a string.";
alert(temp.count("is")); //should output '2'
Lösung

Das "g" im regulären Ausdruck (kurz für global) bedeutet, dass die gesamte Zeichenkette durchsucht werden soll und nicht nur das erste Vorkommen. Dies entspricht zweimal "ist":

var temp = "Dies ist eine Zeichenkette.";
var count = (temp.match(/is/g) || []).length;
console.log(count);

Und wenn es keine Übereinstimmungen gibt, gibt es 0 zurück:

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

Sie können match verwenden, um eine solche Funktion zu definieren:

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