还有更好的选择吗?
name.gsub('è','e').gsub('à','a').gsub('ò','o').gsub('ì','i').gsub('ù','u')
感谢
答案 0 :(得分:9)
使用tr。
也许像string.tr('èàòìù', 'eaoiu')
。
答案 1 :(得分:1)
substitutes = {'è'=>'e', 'à'=>'a', 'ò'=>'o', 'ì'=>'i', 'ù'=>'u'}
substitutes.each do |old, new|
name.gsub!(old, new)
end
或者你可以使用an extension of String such as this one为你做这件事。
答案 2 :(得分:1)
如果您真的想要一个完整的解决方案,请尝试从Perl's Unidecode module拉出表格。在将这些表转换为Ruby之后,您将需要遍历输入的每个字符,将表的值替换为该字符。
答案 3 :(得分:0)
在黑暗中进行狂野刺杀,但如果您尝试删除重音字符,因为您使用的是旧版文本编码格式,则应该查看Iconv
。
关于这个主题的介绍:http://blog.grayproductions.net/articles/encoding_conversion_with_iconv
答案 4 :(得分:0)
如果您想知道您要做什么的技术术语是Case Folding和可能的Unicode Normalization(有时是整理)。
以下a case folding configuration for ThinkingSphinx可让您了解需要担心的角色数量。
答案 5 :(得分:0)
如果JRuby是一个选项,请参阅我的问题的答案:
How do I detect unicode characters in a Java string?
它使用Normalizer处理从字母中删除重音。您可以从JRuby访问该类。