Comment passez-vous en boucle dans une chaîne multiligne en Ruby?
-
03-07-2019 - |
Question
Question assez simple d'un premier programmeur Ruby.
Comment passez-vous en boucle dans une dalle de texte en Ruby? À chaque fois qu'une nouvelle ligne est remplie, je souhaite redémarrer la boucle interne.
def parse(input)
...
end
La solution
str.each_line do |line|
#do something with line
end
Autres conseils
Ce que Iraimbilanja a dit.
Ou vous pouvez diviser la chaîne en nouvelles lignes:
str.split(/\r?\n|\r/).each { |line| … }
Veillez à ce que each_line
conserve les caractères de saut de ligne, alors que split
les mange.
Notez que les expressions rationnelles que j’ai utilisées ici s’occupent des trois formats de fin de ligne. String # each_line
sépare les lignes par l'argument facultatif sep_string
, défini par défaut sur $ /
, qui est lui-même défini sur " \ n "
simplement.
Enfin, si vous souhaitez effectuer une analyse plus complexe des chaînes, consultez la classe StringScanner intégrée.
Vous pouvez également utiliser n'importe quel modèle:
str.scan(/\w+/) do |w|
#do something
end
str.each_line.chomp do |line|
# do something with a clean line without line feed characters
end
Je pense que cela devrait prendre en charge les nouvelles lignes.