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
Était-ce utile?

La solution

Chaîne # each_line

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top