Existe-t-il un moyen simple de vérifier combien de fois un caractère apparaît dans une chaîne?
Existe-t-il un moyen simple de vérifier combien de fois un caractère apparaît dans une chaîne?
Réponses:
Vous pouvez supprimer tout autre caractère de la chaîne et vérifier la longueur:
str.replace(/[^a]/g, "").length
Ici, le nombre de as est compté str.
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
Cela compte a dans l'exemple ci-dessous:
str = "A man is as good as his word";
alert(str.split('a').length-1);
Si vous voulez être insensible à la casse, vous voudrez quelque chose comme
alert(str.split( new RegExp( "a", "gi" ) ).length-1);
Pour qu'il attrape le drapeau "A" et "a" ... "g" n'est pas vraiment nécessaire, mais vous avez besoin du drapeau "i"
Utilisez un RegEx pour compter le nombre de "a" dans une chaîne.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
Laissez-moi vous expliquer comment cela fonctionne:
string.matchIl s'agit d'une méthode RegEx. Il recherche le RegEx spécifié dans la chaîne spécifiée (dans ce cas, la chaîne "chaîne").
(/a/gi)Ceci est le RegEx réel. Il lit, "trouver le caractère a." C'est très simple. Il porte également deux drapeaux, le "g" et le "i". Le "g" dit de trouver TOUTES les occurrences du caractère "a". Sinon, il ne trouverait que le premier, et il ne compterait jamais au-delà du numéro un. Le deuxième drapeau est "i". Cela fait correspondre le RegEx à tous les cas de ce caractère. Si cet indicateur (i) n'était pas là, le code ci-dessus ne compterait que 4, car il ignorerait le «A» majuscule dans la chaîne. En raison du "i", il correspondra aux majuscules et minuscules. Supprimez le «i» si vous souhaitez faire correspondre la casse des lettres.
string.matchrenvoie un tableau de toutes les correspondances, nous utilisons donc la lengthméthode pour récupérer le nombre d'entrées du tableau. Aussi simple que cela!
a" dans string, alors string.match(/a/gi)égal nullet vous avez une erreur Cannot read property 'length' of null.
C'est parce que si nous voulons pouvoir compter n'importe quel type de caractères, nous devons considérer deux expressions. Un pour commun des caractères et seconde pour spéciaux caractères par exemple comme [, ], ^et ainsi de suite. C'est facile de l'oublier, mais même si nous nous en souvenons, je pense que nous étendons inutilement notre code.
Dans ce cas pour la chaîne stret le caractère chfonctionne chacune de ces solutions:
let count = str.split(ch).length - 1
(merci à @Sarfraz )
ou
let count = str.split('').filter(x => x == ch).length
ou
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
Prendre plaisir!
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);