Beachten Sie, dass der Text nach dem durch Tabulatoren getrennten Text sortiert wurde, um die Anzeige zu erleichtern.
profile.txt #LR utf-8
john m 19
micheal m 28
abbie f 31
dabid m 17
claire f 26
Von links werden "Name, Geschlecht, Jahr" durch Tabulatoren getrennt aufgelistet. Ich möchte sie nach Namen sortieren.
Überprüfen Sie zunächst, wie der Text selbst ausgegeben wird.
File.open("meibo.txt") do |text|
text.each_line do |line|
p line
end
end
Wenn Sie die Datei mit erweitern
$ ruby example.rb
"john\tm\t19\n"
"micheal\tm\t28\n"
"abbie\tf\t31\n"
"dabid\tm\t17\n"
"claire\tf\t26\n"
Da es ausgedrückt wird als, erstellen Sie aus jeder Zeile ein Array ohne Tabulator und Zeilenvorschubcode Standardmäßig sortieren und ausgeben.
Fügen Sie jede Zeile einmal in das Array ein, wie "[Name, Geschlecht, Alter]".
profile = []
File.open("profile.txt") do |text|
text.each_line do |line|
profile << line.chomp.split("\t")
end
end
Durch ".chomp" zum Entfernen von "\ n" am Ende jeder Zeile und jedes Tabulatortrennzeichens wird ".split (" \ t ")" getrennt
$ ruby example.rb
[["john", "m", "19"],
["micheal", "m", "28"],
["abbie", "f", "31"],
["dabid", "m", "17"],
["claire", "f", "26"]]
Auf diese Weise wurde das Array "Profil" sauber erhalten "[Name, Geschlecht, Alter]" und nur die erforderlichen Daten.
Da Ruby eine sort_by-Methode hat, verwenden Sie diese Methode, um nach Namen zu sortieren.
profile_sort = profile.sort_by{|man| man[0]}
pp profile_sort
Das Ausgabeergebnis ist
$ ruby example.rb
[["abbie", "f", "31"],
["claire", "f", "26"],
["dabid", "m", "17"],
["john", "m", "19"],
["micheal", "m", "28"]]
Und es wurde sicher in der Reihenfolge des Namens sortiert.
Wenn Sie diesen Punkt erreicht haben, geben Sie das sortierte Array aus, leiten Sie es um und sortieren Sie es.
profile_sort.each do |text|
puts text.join("\t")
end
Verketten Sie die Zeichenfolgen des Arrays, indem Sie sie mit \ t
verbinden. Bei der Ausgabe mit "Puts" wird es durch Tabulatoren getrennt.
Außerdem wird "Puts" mit einem Zeilenumbruch ausgegeben. Schreiben Sie also "Puts" text.join ("\ t") + "\ n" `
Sie müssen keinen Zeilenvorschubcode schreiben.
Wenn Sie dies tun, wird die Ausgabe sein
$ ruby example.rb
abbie f 31
claire f 26
dabid m 17
john m 19
micheal m 28
Ja, Sie haben die durch Tabulatoren getrennten Dateien erfolgreich sortiert.
Recommended Posts