2014-07-24 62 views
2

我对使用特殊波兰语字符的字符串进行排序有问题。我的代码如下所示:使用波兰语字符对字符串排序

["Łotwa", "Luksemburg", "Anglia"].sort_by{|x| ActiveSupport::Inflector.transliterate(x)} 

这个代码给我下面的结果:

["Anglia", "Łotwa", "Luksemburg"] 

,但它应该是这样的:

["Anglia", "Luksemburg", "Łotwa"] 

我试图用这些宝石:

https://github.com/grosser/sort_alphabetical 
https://github.com/jarib/ffi-icu 

但是你不解决这个问题。问题由波兰人特殊字符"Ł"引起。

+0

取决于什么,在哪里,你在做这个排序,一种方法可以是使用排序支持您的数据库,而不是在Ruby中做的。 – matt

+0

我想你应该让你的问题更清楚 - 例如,让其他人知道“'L'应该在'L''和'M'之间。否则,这个问题颇具误导性。 –

回答

5

您可以使用string_case_pl宝石:

require 'string_cmp_pl' 
%w(Anglia Litwa Zanzibar Łotwa).sort 
# => ["Anglia", "Litwa", "Łotwa", "Zanzibar"]