webentwicklung-frage-antwort-db.com.de

Javascript: Wie oft ein Zeichen in einer Zeichenfolge vorkommt

Gibt es eine einfache Möglichkeit, zu überprüfen, wie oft ein Zeichen in einem String erscheint?

64
Ruth

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 as in str sind.

53
Gumbo

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"

29
Sarfraz

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!

14
God is good

Meiner Meinung nach ist es bequemer und sicherer, in diesem Fall reguläre Ausdrücke zu vermeiden

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!

4
simhumileco
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
3
Darin Dimitrov
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);
0
Nitin Tyagi