【发布时间】:2012-03-16 20:52:19
【问题描述】:
对于数组,有一个漂亮的sort 方法来重新排列元素的序列。我想为 String 实现相同的结果。
例如,我有一个字符串str = "String",我想用一种简单的方法将其按字母顺序排序为"ginrSt"。
是否有本地方法可以启用此功能,或者我是否应该包含来自 Enumerable 的 mixin?
【问题讨论】:
对于数组,有一个漂亮的sort 方法来重新排列元素的序列。我想为 String 实现相同的结果。
例如,我有一个字符串str = "String",我想用一种简单的方法将其按字母顺序排序为"ginrSt"。
是否有本地方法可以启用此功能,或者我是否应该包含来自 Enumerable 的 mixin?
【问题讨论】:
chars method 返回字符串字符的枚举。
str.chars.sort.join
#=> "Sginrt"
不区分大小写排序:
str.chars.sort(&:casecmp).join
#=> "ginrSt"
【讨论】:
str.chars.sort(&:casecmp).join
还有(只是为了好玩)
str = "String"
str.chars.sort_by(&:downcase).join
#=> "ginrSt"
【讨论】:
str.unpack("c*").sort.pack("c*")
【讨论】:
可以将字符串转为数组进行排序:
'string'.split('').sort.join
【讨论】: