我想将e
之类的字符转换为普通hide()
。我希望转换语言以及人们如何键入城市。例如,大多数人在搜索时实际上键入了Brasilia,而不是Brasília。当像Rueters这样的新闻机构报道巴西利亚时,他们通常将其拼写为巴西利亚。所以再次,只是寻找任何宝石(或字符编码数学/方法可能更好,因为可以使用该答案,以供参考,在其他语言)。
这只是为了处理典型的“扩展ASCII”字符集。注意:我正在使用标准的Unicode字符串。
答案 0 :(得分:18)
您可能正在寻找I18n#transliterate
。
Gem为here,使用gem install i18n
安装。
示例:
irb(main):001:0> require 'i18n'
=> true
irb(main):002:0> I18n.enforce_available_locales = false
=> false
irb(main):003:0> I18n.transliterate("ë,à,é,ä")
=> "e,a,e,a"
答案 1 :(得分:11)
从Ruby 2.2开始,String#unicode_normalize
到normalize个unicode字符串。 NFKD表单分隔字符和标点符号:
'ë'.unicode_normalize(:nfkd).chars
#=> ["e", "̈"]
# ^ ^
# char punctuation
由于该字符是有效的ASCII码点而标点符号不是,因此可以用它来删除后者:
'ë,à,é,ä'.unicode_normalize(:nfkd).encode('ASCII', replace: '')
#=> "e,a,e,a"