如何在 Ruby 中为排序添加 UTF-8 支持(包括 ł 字符,而不影响可移植性)



Ruby 字符串函数不支持 UTF-8。

例如,['l', 'ł', 'm'].sort返回["l", "m", "ł"]而不是["l", "ł", "m"]

如何在 Ruby 中对 UTF-8 字符串进行排序?

在 RoR 中对 UTF-8 字符串进行排序 - 接受的答案不支持 ł 字符(问题自 2015 年以来未解决,被 2014 年打开的 PR 等待阻止(,截至 2017 年 10 月 8 日未合并等待。

ffi-icu 答案适用于安装了 libicu 的系统,AFAIK 并不是真正可移植的。

好的解决方案是使用 gem https://github.com/twitter/twitter-cldr-rb

require 'twitter_cldr'
collator = TwitterCldr::Collation::Collator.new
collator.sort(['m', 'ł', 'l'])
=> ["l", "ł", "m"]

最新更新