根据当前语言环境对字符串数组进行排序有什么好方法?
例如标准Array#sort
在“Z”之后放置“Ä”,这在德语中是不正确的。
我原本期望gem I18n提供一个钩子来定义我自己的排序算法或提供校对字符串或对象。在我的想象中,将此proc或字符串传递给sort函数会使其表现得如此必要。我知道这在Python中是可行的,例如。
这次Google没有帮助我。你能吗?任何建议表示赞赏!
答案 0 :(得分:2)
有两种常见的方法:
按数据库排序(optimus)
或者,如果您在排序之前绝对需要使用ruby做一些事情:
Unlocalize特殊字符的订购: “Äñðøß”.uncolate => “Andos”
您将uncolate函数添加到字符串并用于排序 uncolate可以
class String
def uncolate
self.tr(SPECIAL_CHARS,SUBSTITUTE_CHARS)
end
end
并排序:
international_things.sort_by{|i| i.international_attr.uncolate}
我希望它有所帮助