Como você percorrer uma string de múltiplas linhas em Ruby?
-
03-07-2019 - |
Pergunta
Muito simples pergunta de um primeiro tempo de Ruby programador.
Como você percorrer um pedaço de texto em Ruby? Toda vez que uma nova linha é cumprida, quero reiniciar o interior loop.
def parse(input)
...
end
Solução
str.each_line do |line|
#do something with line
end
Outras dicas
O que disse Iraimbilanja.
Ou você poderia dividir a string em novas linhas:
str.split(/\r?\n|\r/).each { |line| … }
Tenha em atenção que each_line
mantém os caracteres de avanço de linha, enquanto come split
-los.
Observe o regex que usei aqui vai cuidar de todos os formatos que terminam três linhas. separa String#each_line
sentido pela sep_string
argumento opcional, cujo padrão é $/
, que se padrões para "\n"
simplesmente.
Por último, se você quer fazer mais complexa análise de cadeia, veja o built-in class StringScanner.
Você também pode fazer com com qualquer padrão:
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
Eu acho que isso deve cuidar das novas linhas.