在Rails中按字母顺序排序

时间:2013-08-26 09:58:37

标签: ruby-on-rails sorting

如何在Rails中按字母顺序排序数组。我试过了:

sort_by(&:field_name) 

这给了我一个大写字母顺序然后小写顺序的数组。我试过了:

array.sort! { |x,y| x.field_name.downcase <=> y.field_name.downcase }

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:14)

首先应该对每个字符串进行整理,然后按以下方式排序:

array = ["john", "Alice", "Joseph", "anna", "Zilhan"]
array.sort_by!{ |e| e.downcase }
=> ["Alice", "anna", "john", "Joseph", "Zilhan"]

答案 1 :(得分:2)

请注意 - 名称可以包含特殊字符。这些将被分类到最后。

>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| e.downcase }
=> ["Alice", "john", "Zilhan", "Ägidius"]

为了解决这个问题,您可以使用......

>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| ActiveSupport::Inflector.transliterate(e.downcase) }
=> ["Ägidius", "Alice", "john", "Zilhan"]