Ich habe diese Antwort aktualisiert. Mir gefällt die Idee, ein Spiel zu verwenden, besser, aber es ist langsamer:
console.log(("str1,str2,str3,str4".match(/,/g) || []).length); //logs 3
console.log(("str1,str2,str3,str4".match(new RegExp("str", "g")) || []).length); //logs 4
Verwenden Sie einen regulären Ausdruck, wenn Sie vorher wissen, wonach Sie suchen, andernfalls können Sie die RegExp
Konstruktor, und übergeben Sie die g
Flagge als Argument.
match
gibt zurück. null
ohne Ergebnis, so dass die || []
Die ursprüngliche Antwort aus dem Jahr 2009 finden Sie unten. Es wird unnötigerweise ein Array erstellt, aber die Verwendung eines Splits ist schneller (Stand: September 2014). Ich bin zwiegespalten. Wenn ich die Geschwindigkeit wirklich bräuchte, würde ich ohne Frage einen Split verwenden, aber ich würde es vorziehen, Match zu verwenden.
Alte Antwort (von 2009):
Wenn Sie nach den Kommas suchen:
(mainStr.split(",").length - 1) //3
Wenn Sie auf der Suche nach dem str
(mainStr.split("str").length - 1) //4
Sowohl in der Antwort von @Lo als auch in meiner eigenen dummen Leistungsprüfung split ist schneller, zumindest in Chrome, aber auch hier scheint die Erstellung eines zusätzlichen Arrays nicht sinnvoll zu sein.