2010-05-25 12 views
52

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

+3

duplication possible de [Compter le nombre d'occurences d'un caractère dans une chaîne en Javascript] (http://stackoverflow.com/questions/881085/count-the-number-of-occurances-of-a-character- in-a-string-in-javascript) –

Répondre

41

Vous pouvez supprimer tout autre caractère de la chaîne et vérifier la longueur:

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

Ici, il est compté combien a s sont en str.

+0

Merci beaucoup – Ruth

3
var s = "dqsskjhfds"; 
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string 
+2

Comment compliqué. – Kobi

22

Cela compte a en exemple ci-dessous:

str = "A man is as good as his word"; 
alert(str.split('a').length-1); 

Si vous voulez insensible à la casse que vous voudriez quelque chose comme

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

Alors qu'il attrape "A" et "a" ... le drapeau "g" n'est pas vraiment nécessaire, mais vous avez besoin du drapeau "i"

+0

Merci cela a bien fonctionné! –

+1

Réponse la plus efficace, triste les autres ont eu autant de votes. – Josh

8

Utilisez un RegEx pour compter le nombre de "a" si n une chaîne.

var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda'; 
 

 
document.write(string.match(/a/gi).length);

Permettez-moi de vous expliquer comment cela fonctionne:

string.match C'est une méthode de RegEx. Il recherche le RegEx spécifié dans la chaîne spécifiée (dans ce cas, la chaîne "string").

(/a/gi) Ceci est le réel RegEx. Il lit, "trouver le personnage 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 ne compterait jamais plus que le numéro un. Le deuxième drapeau est "i". Il fait correspondre le RegEx tous les cas de ce caractère. Si ce drapeau (i) n'était pas là, le code ci-dessus ne compterait que 4, car il omettrait le "A" majuscule dans la chaîne. En raison du "i", il va correspondre supérieur et minuscule.

string.match renvoie un tableau de toutes les correspondances, nous utilisons donc la méthode length pour récupérer le nombre d'entrées de tableau. Aussi simple que cela!

Questions connexes