2012-02-27 20 views
51

Per Array, c'è un bel metodo sort per riorganizzare la sequenza di elementi. Voglio ottenere gli stessi risultati per una stringa.Come ordinare i caratteri di una stringa in ordine alfabetico?

Ad esempio, ho una stringa str = "String", desidero ordinarla alfabeticamente con un metodo semplice su "ginrSt".

C'è un modo nativo per abilitare questo o dovrei includere i mixin da Enumerable?

risposta

111

Il chars method restituisce un'enumerazione dei caratteri della stringa.

str.chars.sort.join 
#=> "Sginrt" 

Per ordinare caso insensitively:

str.chars.sort(&:casecmp).join 
#=> "ginrSt" 
+17

o 'str.chars.sort (&: casecmp) .join' – tokland

13

anche (solo per divertimento)

str = "String" 
str.chars.sort_by(&:downcase).join 
#=> "ginrSt" 
2
str.unpack("c*").sort.pack("c*") 
+3

aggiungi qualche spiegazione. cosa stai cercando di dire esattamente? –

1

È possibile trasformare la stringa in un array di ordinare:

'string'.split('').sort.join 
Problemi correlati