2012-02-27 8 views
51

Для Array существует довольно sort метод для изменения последовательности элементов. Я хочу добиться тех же результатов для String.Как отсортировать символы строки в алфавитном порядке?

Например, у меня есть строка str = "String", я хочу отсортировать ее по алфавиту одним простым способом до "ginrSt".

Есть ли родной способ включить это или я должен включить mixins из Enumerable?

ответ

111

chars method возвращает перечисление символов строки.

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

Для сортировки случай нечувствительно:

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

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

13

также (только для развлечения)

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

добавьте к нему некоторое объяснение. что именно вы пытаетесь сказать? –

1

Вы можете преобразовать строку в массив для сортировки:

'string'.split('').sort.join 
Смежные вопросы