web-dev-qa-db-ja.com

文字列をアルファベット順に並べ替える方法は?

配列の場合、要素のシーケンスを再配置するかなりのsortメソッドがあります。文字列でも同じ結果を達成したい。

たとえば、文字列str = "String"がある場合、"ginrSt"への1つの簡単な方法でアルファベット順に並べ替えます。

これを有効にするネイティブな方法はありますか、Enumerableからのミックスインを含める必要がありますか?

54
steveyang

chars method は、文字列の文字の列挙を返します。

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

大文字と小文字を区別せずに並べ替えるには:

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

また(楽しみのためだけに)

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

文字列を配列に変換して並べ替えることができます。

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