67 votes

Comment trier les caractères d'une chaîne par ordre alphabétique?

Pour le Tableau, il y a un joli sort méthode pour réorganiser l'ordre des éléments. Je veux obtenir les mêmes résultats pour une Chaîne de caractères.

Par exemple, j'ai une chaîne de caractères str = "String", je veux les trier par ordre alphabétique avec une méthode simple pour "ginrSt".

Est-il un moyen natif pour activer cela ou dois-je inclure mixin d' Enumerable?

135voto

molf Points 34978

L' chars méthode retourne une énumération de la chaîne de caractères.

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

Pour trier les cas insensiblement:

str.chars.sort { |a, b| a.casecmp(b) } .join
#=> "ginrSt"

15voto

fl00r Points 41855

Aussi (juste pour le fun)

str = "String"
str.chars.sort_by(&:downcase).join
#=> "ginrSt"

3voto

user2386335 Points 1
str.unpack("c*").sort.pack("c*")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X