Comptage du nombre de voyelles dans une chaîne de caractères avec JavaScript
Je suis en utilisant le code JavaScript de base pour compter le nombre de voyelles dans une chaîne de caractères. Le code ci-dessous fonctionne, mais je voudrais l'avoir nettoyé un peu. En utilisant .includes()
aider à tout en considérant qu'elle est une chaîne de caractères? Je voudrais utiliser quelque chose comme string.includes("a", "e", "i", "o", "u")
si possible, afin de nettoyer l'instruction conditionnelle. Aussi, est-il nécessaire pour convertir l'entrée dans une chaîne de caractères?
function getVowels(str) {
var vowelsCount = 0;
//turn the input into a string
var string = str.toString();
//loop through the string
for (var i = 0; i <= string.length - 1; i++) {
//if a vowel, add to vowel count
if (string.charAt(i) == "a" || string.charAt(i) == "e" || string.charAt(i) == "i" || string.charAt(i) == "o" || string.charAt(i) == "u") {
vowelsCount += 1;
}
}
return vowelsCount;
}
OriginalL'auteur dcook | 2015-04-04
Vous devez vous connecter pour publier un commentaire.
Vous est possible de faire ça avec une petite regex:
- Ce juste des matchs contre les regex (
g
permet de rechercher l'ensemble de la chaîne,i
le rend insensible à la casse) et retourne le nombre de matchs. Nous vérifions pournull
cas où il n'y a pas de matchs (ie pas de voyelles), et retourner la valeur 0 dans ce cas.OriginalL'auteur James Thorpe
Vous n'avez pas besoin de convertir quoi que ce soit, Javascript erreur de manipulation est assez pour astuce vous sur une telle fonction simple si il sera nécessaire.
subject
ne contiennent pas de voyelles.return (subject.match(/[aeiou]/gi) || []).length;
changement à cette juste au cas oùOriginalL'auteur sudo
Utilisation
match
mais être prudent, car il peut renvoyer un null si aucune correspondance n'est trouvéeOriginalL'auteur Radu Chiriac
Court et ES6, vous pouvez utiliser la fonction count(str);
OriginalL'auteur Sumer
Il suffit d'utiliser cette fonction [pour ES5] :
Fonctionnera comme un charme
OriginalL'auteur maximast
Cela pourrait aussi être résolu à l'aide de .replace() méthode, en remplaçant tout ce qui n'est pas une voyelle avec une chaîne vide (en gros il va supprimer ces caractères) et le retour de la nouvelle longueur de la chaîne:
ou si vous préférez ES6
OriginalL'auteur Iulius
C'est le plus court de solution
OriginalL'auteur Akash More
OriginalL'auteur user9248223