2009-03-03 8 views
5

Ich finde Rubys each Funktion ein wenig verwirrend. Wenn ich eine Textzeile habe, wird mir eine each Schleife jedes Leerzeichen geben und nicht jedes einzelne Zeichen.Wie analysiert man eine durch Tabulatoren getrennte Textzeile in Ruby?

Also, was ist der beste Weg zum Abrufen von Abschnitten der Zeichenfolge, die durch ein Tab-Zeichen begrenzt sind. Im Moment habe ich:

line.split.each do |word| 
... 
end 

aber das ist nicht ganz richtig.

Antwort

16

Ich bin mir nicht sicher, ob ich recht verstehe Ihre Frage, aber wenn Sie die Linien auf Tabulatoren teilen möchten, können Sie als Argument angeben, dass aufzuspalten:

line.split("\t").each ... 

oder Sie können es angeben, wie ein regulärer Ausdruck:

line.split(/\t/).each ... 

Jeder im Grunde nur wird für alle Elemente in einem Array und Split erzeugt aus einem String ein Array.

+0

Es ist in Ordnung für einfache Fälle. Aber ist das nicht einfach. Es gibt eine Anzahl von Randfällen, wenn der Inhalt von einer externen Quelle stammt. Die Zeilenumbrüche, Escape-Sequenzen, Anführungszeichen usw. sind so unterschiedlich zwischen verschiedenen Apps. –

Verwandte Themen