标准化文件名的字符串,删除重音和特殊字符

时间:2012-11-21 22:05:03

标签: ruby-on-rails ruby regex string ruby-on-rails-3

我正在尝试找到一种规范化字符串的方法,将其作为文件名传递。

到目前为止,我有这个:

my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n, '').downcase.gsub(/[^a-z]/, '_')

但第一个问题: - 角色。我想这种方法存在更多问题。

我不控制名称,名称字符串可以包含重音,空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音,并用“_”字符替换其余部分。

名称如下:

  • “Prélèvements - Routine”
  • “Carnetdesanté”
  • ...

我希望他们像文件名,没有空格/特殊字符:

  • “prelevements_routine”
  • “carnet_de_sante”
  • ...

感谢您的帮助:)

1 个答案:

答案 0 :(得分:9)

看看ActiveSupport::Inflector.transliterate,处理这种字符问题非常有用。请阅读:ActiveSupport::Inflector

然后,您可以执行以下操作:

ActiveSupport::Inflector.transliterate my_string.downcase.gsub(/\s/,"_")