【发布时间】:2013-12-19 04:20:47
【问题描述】:
我有这样一个数组:["c", "-b", "a"]
["c", "-b", "a"].sort! 返回["-b", "a", "c"]
我希望它像["a", "-b", "c"]一样排序
如何从排序中排除减号? 最简单的获取方法是什么?
【问题讨论】:
我有这样一个数组:["c", "-b", "a"]
["c", "-b", "a"].sort! 返回["-b", "a", "c"]
我希望它像["a", "-b", "c"]一样排序
如何从排序中排除减号? 最简单的获取方法是什么?
【问题讨论】:
["c", "-b", "a"].sort_by{|e| e[/\w+/] }
# => ["a", "-b", "c"]
【讨论】:
sort_by {|e| e.match(/(?:^-)?(.+)/)[1]}。我试图将其表达为e[/??/],但可以弄清楚如何。你(或其他人)能帮忙吗?
'-a-b'[/^-?(.+)$/,1] # => "a-b"
'-a-b'[/\w.*/] # => "a-b"
\w 的字符串):'-:a-b'[/[^-].*/]。
这会忽略所有非字母数字符号,适用于任意长度的字符串:
["c", "-b", "a"].sort_by { |s| s.gsub(/\W/,'') }
# => ["a", "-b", "c"]
【讨论】:
这也有效,但sort_by 更直接:
["c", "-b", "a"].sort {|x,y| x[/\w+/] <=> y[/\w+/]} # => ["a", "-b", "c"]
编辑:更好,我认为:
["c", "-b", "a"].sort {|x,y| x[/[^-]+/] <=> y[/[^-]+/]}
【讨论】: