web-dev-qa-db-fra.com

Comment trier une chaîne de caractères par ordre alphabétique?

Pour Array, il existe une jolie méthode sort pour réorganiser la séquence des éléments. Je veux obtenir les mêmes résultats pour une chaîne.

Par exemple, j'ai une chaîne str = "String", Je veux le trier par ordre alphabétique avec une méthode simple pour "ginrSt".

Existe-t-il un moyen natif pour l'activer ou dois-je inclure des mixins de Enumerable?

54
steveyang

La méthode chars renvoie une énumération des caractères de la chaîne.

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

Pour trier la casse de manière insensible:

str.chars.sort(&:casecmp).join
#=> "ginrSt"
120
molf

Aussi (juste pour le plaisir)

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

Vous pouvez transformer la chaîne en un tableau pour trier:

'string'.split('').sort.join
1
leandrotk