ich eine Datei haben, die ich in den Werten aus und legen Sie in ein Array lesen, damit ich sie sortieren:Ruby-Sortier Array, um durch integer in Zeichenfolge
input.txt
#75 - Hamilton Ave.
#12A - Long Road
#12B - Long Road
#120 - Curvy Road
Meine Ruby:
result = []
file = open("input.txt").each do | line |
result << line
end
puts result.sort_by {|x| x.to_i}.reverse
Ich möchte nach dem Integer-Wert in der Zeichenfolge sortieren. Allerdings kommt der Auftrag aus wie:
#12A - Long Road
#12B - Long Road
#120 - Curvy Road
#75 - Hamilton Ave.
Statt:
#12A - Long Road
#12B - Long Road
#75 - Hamilton Ave.
#120 - Curvy Road
Soll ich irgendeine Art von Regex sein mit dem String eval beim Sortieren?
Ist "#" das erste Zeichen jeder Zeile? Wenn nicht, sollten Sie das ändern. "# 123anything" 'wird immer Null sein. –
Ja, es ist Teil der Zeichenfolge – porterhaus
Dann wollen Sie 'result.sort_by {| x | x [1 ..- 1]. to_i} .reverse ". Zum Beispiel "# 74 - Hamilton Ave." [1 ..- 1] # => "74 - Hamilton Ave.". –