首页 > 解决方案 > 从包含 Ruby 中包含变音符号的单词的数组中获取唯一值

问题描述

如何uniq在没有正确变音符号的情况下通过折扣相同单词的存在来从数组中获取值?

现在它的工作原理是这样的:

["Poznan", "Poznań", "Gdańsk"].uniq 
=> ["Poznan", "Poznań", "Gdańsk"]

这就是我想要实现的目标:

["Poznan", "Poznań", "Gdańsk"].uniq 
=> ["Poznań", "Gdańsk"]

标签: arraysrubyunicodediacriticsuniq

解决方案


使用I18n.transliterate : Transliterates UTF-8characters to ASCII. 默认情况下,此方法只会将拉丁字符串音译为 ASCII 近似值:

> require "i18n"
> I18n.config.available_locales = :en
> ["Poznan", "Poznań", "Gdańsk"].map{|e| I18n.transliterate(e)}.uniq
#=> ["Poznan", "Gdansk"] 

推荐阅读