Gibt es eine einfache Möglichkeit, zu überprüfen, wie oft ein Zeichen in einem String erscheint?
Sie können jedes andere Zeichen in der Zeichenfolge entfernen und die Länge überprüfen:
str.replace(/[^a]/g, "").length
Hier wird gezählt, wie viele a
s in str
sind.
Dies zählt a
im folgenden Beispiel:
str = "A man is as good as his Word";
alert(str.split('a').length-1);
Wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen möchten, möchten Sie so etwas wie
alert(str.split( new RegExp( "a", "gi" ) ).length-1);
Es wird also nicht wirklich "A" und "a" ... "g" benötigt, aber "i"
Verwenden Sie ein RegEx, um die Anzahl der "a" in einer Zeichenfolge zu zählen.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
Lassen Sie mich erklären, wie das funktioniert:
string.match
Dies ist eine RegEx-Methode. Es sucht nach dem angegebenen RegEx in der angegebenen Zeichenfolge (in diesem Fall die Zeichenfolge "Zeichenfolge").
(/a/gi)
Dies ist das eigentliche RegEx. Es heißt: "Finde den Charakter a." Es ist sehr einfach. Es trägt auch zwei Flaggen, das "g" und das "i". Das "g" sagt, dass Sie ALLE Vorkommen des Zeichens "a" finden müssen. Ansonsten würde es nur die erste finden und niemals über die Nummer Eins hinaus zählen. Die zweite Flagge ist "i". Dadurch wird das RegEx mit allen Fällen dieses Charakters übereinstimmen. Wenn dieses Flag (i) nicht vorhanden wäre, würde der obige Code nur 4 zählen, da das Großbuchstabe "A" in der Zeichenfolge übersprungen würde. Aufgrund des "i" passt es zu den Großbuchstaben und Kleinbuchstaben. Entfernen Sie das "i", wenn Sie die Groß-/Kleinschreibung verwenden möchten.
Da string.match
ein Array aller Übereinstimmungen zurückgibt, verwenden wir die length
-Methode, um die Anzahl der Array-Einträge abzurufen. So einfach ist das!
Wenn wir alle Arten von Zeichen zählen wollen, müssen wir zwei Ausdrücke berücksichtigen. Eine für common Zeichen und eine zweite für special Zeichen, zum Beispiel [
, ]
, ^
usw. Es ist leicht zu vergessen, aber selbst wenn wir uns daran erinnern, erweitern wir unseren Code unnötig.
In this Fall für den String str
und das Zeichen ch
funktioniert jede dieser Lösungen:
let count = str.split(ch).length - 1
(Danke an @Sarfraz )
oder
let count = str.split('').filter(x => x == ch).length
oder
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
Genießen!
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
var a = "acvbasbb";
var b= {};
for (let i=0;i<a.length;i++){
if((a.match(new RegExp(a[i], "g"))).length > 1){
b[a[i]]=(a.match(new RegExp(a[i], "g"))).length;
}
}
console.log(b);