Ho una serie di stringhe:
arr = ["2.1", "2.2", "2.2.1", "2.2.10", "2.2.2", "2.10"]
Se io uso arr.sort
, il risultato è:
["2.1", "2.10", "2.2", "2.2.1", "2.2.10", "2.2.2"]
Ho bisogno:
["2.1", "2.2", "2.2.1", "2.2.2", "2.2.10", "2.10"]
Come posso ordinarlo correttamente?
Domanda 2:
Come posso ordinare caratteri "alpha" o "beta" come "2.1a" o "0.9b"
Domanda 3:
Se ho una matrice di record attivi con tipo di campo di stringa, che contiene un numero simile, è reale impostare nel modello default_scope :order => ...
con sort_by{|a| a.split(".").map &:to_i }
O
Crea il mio metodo nel modello in modo simile
def my_sort
#sorting
end
Per questo:
Block.all.my_sort
risposte:
3 per risposta № 1arr.sort_by{|a| a.split(".").map &:to_i }
Quale:
split
ciascuna delle stringhe in componenti.- Cambia ciascuno di essi in numeri interi (
map &:to_i
). - Confronta tra loro questi array.