2012-02-27 236 views
51

对于数组,有一个漂亮的方法来重新排列元素的序列。我想为String实现相同的结果。如何按字母顺序排序字符串的字符?

例如,我有一个字符串str = "String",我想用一个简单的方法按字母顺序排列,以"ginrSt"

是否有一种本地方式来启用此功能,或者是否应该包含Enumerable的mixins?

回答

111

chars method返回字符串字符的枚举。

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

为了不区分大小写排序情况:

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

或'str.chars.sort(&:casecmp).join' – tokland 2012-03-07 12:05:10

13

而且(只是为了好玩)

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

向它添加一些解释。你究竟想说什么? – 2013-05-15 14:52:38

1

您可以将字符串到一个数组排序:

'string'.split('').sort.join 
相关问题