如何解决用特殊字符对字符串数组进行排序
|| 在Rails 3中,如何对带有特殊字符的字符串数组进行排序。 我有:[Água,Electricidade,Telefone,Internet,Televisão,Gás,Renda]
但是,当我在数组上调用sort
时,Água
被发送到数组的末尾。
解决方法
我遇到相同问题时使用的方法(取决于iconv gem):
require \'iconv\'
def sort_alphabetical(words)
# caching and api-wrapper
transliterations = {}
transliterate = lambda do |w|
transliterations[w] ||= Iconv.iconv(\'ascii//ignore//translit\',\'utf-8\',w).to_s
end
words.sort do |w1,w2|
transliterate.call(w1) <=> transliterate.call(w2)
end
end
sorted = sort_alphabetical(...)
另一种选择是使用sort_alphabetical gem。
,这是我的方法:
class String
def to_canonical
self.gsub(/[áàâãä]/,\'a\').gsub(/[ÁÀÂÃÄ]/,\'A\')
end
end
[\'Água\',\'Electricidade\',\'Telefone\',\'Internet\',\'Televisão\',\'Gás\',\'Renda\'].sort {|x,y| x.to_canonical <=> y.to_canonical}
这也被证明对其他正则表达式也有用,可以以最适合您的方式实施to_canonical方法,在本示例中,这两个正则表达式均已涉及。
希望这种替代方法有所帮助。
:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。