110 votes

JavaScript : Combien de fois un caractère apparaît-il dans une chaîne de caractères ?

Existe-t-il un moyen simple de vérifier combien de fois un caractère apparaît dans une chaîne de caractères ?

0 votes

99voto

Gumbo Points 279147

Vous pouvez supprimer n'importe quel autre caractère de la chaîne et vérifier la longueur :

str.replace(/[^a]/g, "").length

Ici, on compte combien de a sont en str . Les RegExp est décrite ci-dessous :

[ // Start Character Group
^ // Not operator in character group
a // The character "a"
] // End character group

1 votes

Je tiens à préciser que vous pouvez également tenir compte des majuscules en procédant comme suit let xLength = str.replace(/[^a || A]/g, "").length;

0 votes

@HappyHands31 Vous voulez dire let xLength = str.replace(/[^aA]/g, "").length;

2 votes

@HappyHands31 ne pourrait-on pas simplement ajouter le drapeau insensible à la casse (i) à la regex et la rendre str.replace(/[^a]/gi, "").length ?

55voto

Sarfraz Points 168484

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 souhaitez que la casse ne soit pas prise en compte, vous devez utiliser quelque chose comme

alert(str.split( new RegExp( "a", "gi" ) ).length-1);

Pour qu'il saisisse "A" et "a" ... Le drapeau "g" n'est pas vraiment nécessaire, mais vous avez besoin du drapeau "i".

1 votes

@Josh Cela dépend de ce que chacun aime. Par exemple, j'aime cette réponse parce qu'elle est facile à lire. Mais quelqu'un d'autre préférera une autre réponse parce qu'elle est plus technique, ou stimulante, une autre personne préférera une autre réponse parce qu'elle consomme moins de cpu et ainsi de suite c'est pourquoi JavaScript est si agréable, un goût de liberté.

0 votes

Je ne comprends pas - pourquoi cela fonctionne-t-il ?

39voto

Quentin Points 325526

Faire correspondre le caractère avec une expression régulière, la rendre globale, compter le nombre de correspondances.

"aabbaa".match(/a/g).length;

25voto

simhumileco Points 5383

À mon avis, il est plus pratique et plus sûr d'éviter les expressions régulières dans ce cas.

C'est parce que si nous voulons être en mesure de compter n'importe quel type de caractères, nous devons considérer deux expressions. L'une pour commun et le second pour les caractères spécial caractères par exemple comme [ , ] , ^ et ainsi de suite. Il est facile de l'oublier, mais même si nous nous en souvenons, je pense que nous étendons inutilement notre code.

En ce cas pour la chaîne str et le caractère ch œuvre 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)

Bonne lecture !

4voto

Darin Dimitrov Points 528142
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X