2
在Rails 3中,如何对具有特殊字符的字符串数组进行排序。对具有特殊字符的字符串数组进行排序
我有:
[Água, Electricidade, Telefone, Internet, Televisão, Gás, Renda]
然而当调用sort
阵列Água
在被发送到所述阵列的所述端部。
在Rails 3中,如何对具有特殊字符的字符串数组进行排序。对具有特殊字符的字符串数组进行排序
我有:
[Água, Electricidade, Telefone, Internet, Televisão, Gás, Renda]
然而当调用sort
阵列Água
在被发送到所述阵列的所述端部。
,当我遇到了同样的问题,我使用的方法(取决于的iconv宝石):
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宝石。
这里是我的方法:
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方法可以实现他们的方式最适合你,在这个例子只是涵盖的2正则表达式。
希望这个替代方案有所帮助。 :)
如果我将它存储在ApplicationHelper中,它将在所有视图和控制器中是否可用? – 2011-05-23 16:22:43
只能在视图中。你可以把它放到'lib'文件夹中的一个文件中(不要忘记在'application.rb'中需要它的文件),并且修改'Array'类。 – 2011-05-23 17:34:58