Frage

Pretty einfache Frage von erstmaligen Ruby-Programmierern.

Wie Sie eine Schleife durch eine Platte von Text in Ruby? Jedesmal, wenn ein Newline erfüllt ist, mag ich die innere Schleife neu starten.

def parse(input)
    ...
end
War es hilfreich?

Lösung

String # each_line

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

Andere Tipps

Was sagte Iraimbilanja.

Oder Sie könnten die Zeichenfolge an neuen Linien aufgeteilt:

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

Beachten Sie, dass each_line die Zeilenvorschub Zeichen hält, während split sie isst.

Beachten Sie die regex ich hier verwendet wird, wird von allen drei Zeilenende Formate kümmern. String#each_line trennt Linien durch das optionale Argument sep_string, die standardmäßig auf $/, die sich standardmäßig einfach "\n".

Schließlich, wenn Sie wollen komplexere Zeichenfolgenanalyse zu tun, überprüft die eingebaute in StringScanner Klasse.

Sie können auch tun mit mit einem beliebigen Muster:

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

Ich denke, diese Pflege der Zeilenumbrüche nehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top