如何删除像口音一样的拉丁字符?

时间:2012-04-24 22:02:14

标签: ruby-on-rails ruby

我需要删除Ruby中的重音符或"ñ"之类的拉丁字符。我尝试使用force_encoding('UTF-8'),但它没有用。

1 个答案:

答案 0 :(得分:4)

我在其他关于Ruby编码的答案中使用的这段代码证明在大多数情况下是有效的。确保您的脚本本身使用UTF8编码保存:

t="doña"
p t.force_encoding(Encoding.locale_charmap).encode('UTF-8')
#=>"do\u251C\u2592a"

如果它是替换你想要的而不是编码有那些库,但你也可以使用一个简单的正则表达式

t="déjà"
puts t.gsub(/[éèàùµñçêï]/, '?') => d?j?
编辑:我注意到你想在评论中用正常版本替换一个角色的特殊版本,你可以这样做,如下所示

p string_with_special_chars.tr( 
"ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž", 
"AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz")