/ / Come posso ordinare un array di stringhe con numeri come "2.1.2.5"? [chiuso] - rubino, stringa, intero

Come posso ordinare una serie di stringhe con numeri come "2.1.2.5"? [chiuso] - rubino, stringa, intero

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 № 1
arr.sort_by{|a| a.split(".").map &:to_i }

Quale:

  1. split ciascuna delle stringhe in componenti.
  2. Cambia ciascuno di essi in numeri interi (map &:to_i).
  3. Confronta tra loro questi array.