[RUBY] Ich möchte nach Tabulatortrennzeichen mit Rubin sortieren

Beachten Sie, dass der Text nach dem durch Tabulatoren getrennten Text sortiert wurde, um die Anzeige zu erleichtern.

Zunächst der zugrunde liegende tabulatorgetrennte Text

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.

Rauer Fluss

  1. Öffnen Sie die Datei und machen Sie sie lesbar
  2. Nach Namen sortieren
  3. Standardausgabe

1. Öffnen Sie die Datei und laden Sie sie

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.

2. Nach Namen sortieren

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.

3. Standardausgabe

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

Ich möchte nach Tabulatortrennzeichen mit Rubin sortieren
[Ruby] Ich möchte einen Methodensprung machen!
Ich möchte eine von Git verwaltete Datei löschen
Ich möchte den Wert in Ruby erhalten
Ich möchte Zeichen konvertieren ...
Ich möchte mit Ruby (ABC177E) eine schnelle Primfaktorisierung durchführen.
Ich möchte eine Parkettdatei auch in Ruby erstellen
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
Webpack und Webpacker, die ich Ruby-Leuten jetzt erzählen möchte
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich möchte die Eingabe begrenzen, indem ich den Zahlenbereich einschränke
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
[Ruby] Ich möchte nur das ungerade Zeichen in der Zeichenfolge ausgeben
Ich möchte eine Webanwendung entwickeln!
Ich möchte ein schönes build.gradle schreiben
Ich möchte doppelte Fehlermeldungen beseitigen
Ich möchte eine ios.android App machen
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte einen Unit Test schreiben!
Ich möchte PHP 7.2 unter Ubuntu 20.04 installieren.
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
[Ruby] Ich möchte veröffentlichte Artikel in der Reihenfolge des neuesten Datums anzeigen
Ich möchte Group By-Verarbeitung mit Stream durchführen (Group-by-Count, Group-by-Sum, Group-by-Max).
Ich möchte Java-Updates insgesamt stoppen
Ich möchte @Autowired in Servlet verwenden
Ich möchte statische Felder auf @Autowired ausrichten
Ich möchte die Teamentwicklung aus der Ferne durchführen
Versuchen Sie, Klassen nach Aufzählungstyp zu sortieren
R von Java ausführen Ich möchte rJava ausführen
[Swift] Ich möchte Gitterlinien (Quadrate) zeichnen.
Ich möchte eine E-Mail in Java senden.
Ich möchte von npm richtig abschließen [2020]
Ich möchte Java8 für jeden mit Index verwenden
Ich möchte den Inhalt der Absicht var_dump
Ich möchte APP_HOME an Logback in Gradle übergeben
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
Ich möchte eine Struktur für die Ausnahmebehandlung entwerfen
rsync4j - Ich möchte rsync in Java berühren.
[Ruby-Grundlagen] Ich habe versucht, Module zu lernen (Kapitel 1)
Ich möchte mit Firestore von Rails spielen
Ich möchte irgendwann sogar in Kotlin sein
Ich möchte schnell von Java nach SQLite schreiben
Ich möchte nach dem Dezimalpunkt abschneiden
Ich möchte einfache Fehler reduzieren. Sich selbst befehlen.
Ich möchte die Aggregationsverarbeitung mit Spring-Batch durchführen
[Rails] Ich möchte CSS mit Webpacker laden
[Ruby] Wenn Sie mehrere Zeichen ersetzen möchten