Domanda

Domanda piuttosto semplice da parte di un programmatore Ruby per la prima volta.

Come si fa ad attraversare una lastra di testo in Ruby? Ogni volta che viene soddisfatta una nuova riga, voglio riavviare il ciclo interno.

def parse(input)
    ...
end
È stato utile?

Soluzione

String # each_line

str.each_line do |line|
    #do something with line
end

Altri suggerimenti

Cosa ha detto Iraimbilanja.

Oppure puoi dividere la stringa su nuove righe:

str.split(/\r?\n|\r/).each { |line| … }

Attenzione che each_line mantiene i caratteri di avanzamento riga, mentre split li mangia.

Nota che la regex che ho usato qui si occuperà di tutti e tre i formati di fine riga. String # each_line separa le righe dall'argomento opzionale sep_string , che per impostazione predefinita è $ / , che per impostazione predefinita è " \ n " semplicemente.

Infine, se si desidera eseguire un'analisi delle stringhe più complessa, consultare la classe StringScanner integrata.

Puoi anche farlo con qualsiasi modello:

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

Penso che questo dovrebbe occuparsi delle nuove linee.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top