在Ruby中,如何将特殊字符(如ë、à、é、ä)全部转换为e、a、e、a? [英] In Ruby, how to convert special characters like ë,à,é,ä all to e,a,e,a?

查看:22
本文介绍了在Ruby中,如何将特殊字符(如ë、à、é、ä)全部转换为e、a、e、a?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将ë这样的字符转换为普通的e。我希望在语言和人们如何键入城市方面进行转换。例如,大多数人在搜索时实际上输入的是巴西利亚,而不是巴西利亚。当鲁特斯这样的新闻机构报道巴西利亚时,他们通常会把它拼成巴西利亚。因此,再说一次,只需查找任何gem(或编码数学/方法的字符可能更好,因为该答案可以在其他语言中使用作为参考)。

这只是为了处理典型的"扩展ASCII"字符集。注意:我正在使用标准Unicode字符串。

推荐答案

从Ruby2.2开始,有String#unicode_normalizenormalizeunicode字符串。NFKD形式分隔字符和标点符号:

'ë'.unicode_normalize(:nfkd).chars
#=> ["e", "̈"]
#     ^    ^
#   char  punctuation

由于该字符是有效的ASCII码点,而标点符号不是,因此可以使用以下命令删除后者:

'ë,à,é,ä'.unicode_normalize(:nfkd).encode('ASCII', replace: '')
#=> "e,a,e,a"

这篇关于在Ruby中,如何将特殊字符(如ë、à、é、ä)全部转换为e、a、e、a?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆