Notez que le texte a été trié à partir du texte délimité par des tabulations pour le rendre plus facile à voir.
profile.txt #LR utf-8 
john	m	19
micheal	m	28
abbie	f	31
dabid	m	17
claire	f	26
À gauche, "Nom, Sexe, Année" sont répertoriés séparés par des tabulations. Je voudrais les trier par nom.
Tout d'abord, vérifiez comment le texte lui-même est sorti.
 File.open("meibo.txt") do |text|
   text.each_line do |line|
    p line
  end
end
Lorsque vous développez le fichier avec
$ ruby example.rb
"john\tm\t19\n"
"micheal\tm\t28\n"
"abbie\tf\t31\n"
"dabid\tm\t17\n"
"claire\tf\t26\n"
Puisqu'il est exprimé comme, créez un tableau de chaque ligne à l'exclusion de l'espace de tabulation et du code de saut de ligne Tri et sortie en standard.
Mettez chaque ligne dans le tableau une fois comme [nom, sexe, âge].
profile = []
 File.open("profile.txt") do |text|
   text.each_line do |line|
    profile << line.chomp.split("\t")
  end
end
Par .chomp pour supprimer \ n à la fin de chaque ligne et délimiteur de tabulation,.split ("\ t")sépare
$ ruby example.rb
[["john", "m", "19"],
["micheal", "m", "28"],
["abbie", "f", "31"],
["dabid", "m", "17"],
["claire", "f", "26"]]
De cette façon, le tableau «profile» a été parfaitement obtenu »[nom, sexe, âge]« et seulement les données nécessaires.
Puisque ruby a une méthode sort_by, utilisez cette méthode pour trier par nom.
 profile_sort =  profile.sort_by{|man| man[0]}
pp profile_sort
Le résultat de sortie est
$ ruby example.rb
[["abbie", "f", "31"],
["claire", "f", "26"],
["dabid", "m", "17"],
["john", "m", "19"],
["micheal", "m", "28"]]
Et il a été trié en toute sécurité par ordre de nom.
Lorsque vous atteignez ce point, sortez le tableau trié, redirigez-le et triez-le.
 profile_sort.each do |text|
  puts text.join("\t")
end
Concaténez les chaînes du tableau en les connectant avec \ t. Il sera délimité par des tabulations lors de la sortie avec put.
De plus, met affichera un saut de ligne, donc la peine d'écrire met text.join (" \ t ") +" \ n "
Vous n'avez pas besoin d'écrire un code de saut de ligne.
Faites cela et la sortie sera
$ ruby example.rb
abbie	f	31
claire	f	26
dabid	m	17
john	m	19
micheal	m	28
Oui, vous avez trié avec succès les fichiers délimités par des tabulations.
Recommended Posts