2012-02-27 19 views
51

Dla Array, istnieje ładna metoda sort do zmiany kolejności sekwencji elementów. Chcę uzyskać takie same wyniki dla String.Jak sortować alfabetycznie ciąg znaków?

Na przykład mam ciąg str = "String", chcę posortować go alfabetycznie za pomocą jednej prostej metody na "ginrSt".

Czy jest natywny sposób włączenia tej funkcji, czy też powinienem dołączyć miksy od Enumerable?

Odpowiedz

111

chars method zwraca wyliczenie znaków ciągu.

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

Aby uporządkować sprawy insensitively:

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

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

13

także (dla zabawy)

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

dodaj do tego wyjaśnienie. co dokładnie próbujesz powiedzieć? –

1

można przekształcić ciąg do tablicy do sortowania:

'string'.split('').sort.join 
Powiązane problemy