itération sur chaque caractère d'une Chaîne en ruby 1.8.6 (each_char)
Je suis nouveau sur ruby et en train d'essayer de faire fonctionner sur chaque personnage séparément à partir d'une base de la Chaîne de rubis. Je suis à l'aide de ruby 1.8.6 et voudrais faire quelque chose comme:
"ABCDEFG".each_char do |i|
puts i
end
Cela produit un undefined method `each_char' erreur.
Je m'attendais à voir une sortie verticale de:
A
B
C
D
..etc
Est le each_char
méthode définie uniquement pour la 1.9? J'ai essayé à l'aide de la plaine each
méthode, mais le bloc simplement ouputs l'ensemble de la chaîne de caractères dans une ligne. La seule façon que je l'ai trouver comment faire cela, ce qui est plutôt gênant est de créer un tableau de caractères à partir du début:
['A','B','C','D','...'].each do|i|
puts i
end
Ce sorties souhaité:
A
B
C
..etc
Est là peut-être un moyen d'arriver à cette sortie à l'aide d'un non modifiée de la chaîne pour commencer?
Je pense que le Java équivalent est:
for (int i = 0; i < aString.length(); i++){
char currentChar = aString.charAt(i);
System.out.println(currentChar);
}
- "asfds".char.chacun....
Vous devez vous connecter pour publier un commentaire.
J'ai le même problème. J'ai l'habitude de recourir à
String#split
:Je suppose que vous pourriez également mettre en œuvre vous-même comme ceci:
Edit: encore une autre alternative est
String#each_byte
, disponible en Ruby 1.8.6, qui renvoie la valeur ASCII de chaque caractère dans une chaîne de caractères ASCII:for i in 0..'ABCDFG'.length-1
...L'extension de la_f0ka du commentaire, de l'esp. si vous aussi vous avez besoin de la position d'index dans votre code, vous devriez être en mesure de faire
La
.chr
est important que Ruby < 1.9 retourne le code d'un caractère à cette position au lieu de une sous-chaîne d'un seul caractère à cette position.0..s.length - 1
=0...s.length
il y a vraiment un problème dans 1.8.6.
et c'est ok après cette édition
dans 1.8.6,vous pouvez ajouter ceci:
Mais maintenant, vous pouvez faire beaucoup plus: