Question assez simple d'un premier Ruby programmeur.
Comment faites-vous une boucle à travers une dalle de texte en Ruby? Chaque fois qu'une nouvelle ligne est rencontrée, je veux redémarrer la boucle interne.
def parse(input)
...
end
str.each_line do |line|
#do something with line
end
Ce que Iraimbilanja a dit.
Ou vous pouvez diviser la chaîne à de nouvelles lignes:
str.split(/\r?\n|\r/).each { |line| … }
Méfiez-vous que each_line
conserve les caractères de saut de ligne, tandis que split
les mange.
Notez que l'expression régulière que j'ai utilisée ici prendra en charge les trois formats de fin de ligne. String#each_line
sépare les lignes par l'argument facultatif sep_string
, qui est par défaut $/
, qui par défaut est "\n"
simplement.
Enfin, si vous souhaitez effectuer une analyse de chaîne plus complexe, consultez la classe StringScanner intégrée.
Vous pouvez également faire avec n'importe quel modèle:
str.scan(/\w+/) do |w|
#do something
end