Come si fa a scorrere una stringa multilinea in Ruby?
-
03-07-2019 - |
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
Soluzione
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.