web-dev-qa-db-fra.com

Trouver le nombre d'occurrences d'un caractère dans une chaîne dans Ruby

Je cherche la méthode Ruby (1.9 ...) qui peut m'aider à trouver le nombre d'occurrences d'un caractère dans une chaîne. Je recherche toutes les occurrences, pas seulement les Premier.

Par exemple: "Mélanie est un noob" Il y a deux occurrences de la lettre "a". Quelle serait la méthode Ruby que je pourrais utiliser pour le trouver?

J'utilise Ruby-doc.org comme référence et la méthode scan dans le String: class a attiré mon attention. La formulation est un peu difficile à comprendre pour moi, donc je ne comprends pas vraiment le concept de scan.

97
Melanie Shebel

Si vous voulez juste le nombre de a:

puts "Melanie is a noob".count('a')  #=> 2

Docs pour plus de détails.

133
steenslag

Ce lien d’une question posée précédemment devrait aider numériser une chaîne en Ruby

scan renvoie toutes les occurrences d’une chaîne dans une chaîne sous forme de tableau, donc

"Melanie is a noob".scan(/a/)

reviendra

["a","a"]
49
Shiv

Vous recherchez la méthode String.index() :

Retourne l'index de la première occurrence de la sous-chaîne ou du motif (regexp) donné dans str. Renvoie la valeur zéro s'il n'est pas trouvé. Si le deuxième paramètre est présent, il spécifie la position dans la chaîne pour commencer la recherche.

"hello".index('e')             #=> 1
"hello".index('lo')            #=> 3
"hello".index('a')             #=> nil
"hello".index(?e)              #=> 1
"hello".index(/[aeiou]/, -3)   #=> 4
29
Georg Schölly