Existe-t-il un moyen simple de vérifier combien de fois un caractère apparaît dans une chaîne?
javascript
string
Ruth
la source
la source
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
a
s est comptéstr
.la source
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"
la source
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.match
Il 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.match
renvoie un tableau de toutes les correspondances, nous utilisons donc lalength
méthode pour récupérer le nombre d'entrées du tableau. Aussi simple que cela!la source
a
" dansstring
, alorsstring.match(/a/gi)
égalnull
et vous avez une erreurCannot read property 'length' of null
.À mon avis, il est plus pratique et sûr d'éviter les expressions régulières dans ce cas
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
str
et le caractèrech
fonctionne 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!
la source
var s = "dqsskjhfds"; alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
la source
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);
la source