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
Foi útil?

Solução

String # each_line

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top