2012-02-27 13 views
51

Para Array, hay una sort método bastante para reordenar la secuencia de elementos. Quiero lograr los mismos resultados para una Cadena. Por ejemplo, tengo una cadena str = "String", quiero ordenarla alfabéticamente con un método simple para "ginrSt".¿Cómo ordenar los caracteres de una cadena alfabéticamente?

¿Hay alguna forma nativa para permitir esto o debo incluir mixins de Enumerable?

Respuesta

111

El chars method devuelve una enumeración de caracteres de la cadena.

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

Para ordenar caso insensible:

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

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

13

también (sólo por diversión)

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

añadir alguna explicación para ello. ¿Qué estás tratando de decir exactamente? –

1

puede transformar la cadena en una matriz para ordenar:

'string'.split('').sort.join 
Cuestiones relacionadas