Ruby:对排除某些符号的数组进行排序

时间:2013-12-19 04:20:48

标签: ruby arrays sorting

我有这样一个数组:["c", "-b", "a"]

["c", "-b", "a"].sort!返回["-b", "a", "c"]

我希望它像["a", "-b", "c"]

一样排序

如何从排序中排除减号? 获得它的最简单方法是什么?

3 个答案:

答案 0 :(得分:6)

["c", "-b", "a"].sort_by{|e| e[/\w+/] }
# => ["a", "-b", "c"]

答案 1 :(得分:2)

这会忽略所有非字母数字符号,适用于任何长度的字符串:

["c", "-b", "a"].sort_by { |s| s.gsub(/\W/,'') }
# => ["a", "-b", "c"] 

答案 2 :(得分:1)

这也有效,但sort_by更直接:

["c", "-b", "a"].sort {|x,y| x[/\w+/] <=> y[/\w+/]} # => ["a", "-b", "c"] 

编辑:更好,我认为:

["c", "-b", "a"].sort {|x,y| x[/[^-]+/] <=> y[/[^-]+/]}