2014-07-24 67 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"]