我正在尝试找到一种规范化字符串的方法,将其作为文件名传递。
到目前为止,我有这个:
my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n, '').downcase.gsub(/[^a-z]/, '_')
但第一个问题: - 角色。我想这种方法存在更多问题。
我不控制名称,名称字符串可以包含重音,空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音,并用“_”字符替换其余部分。
名称如下:
我希望他们像文件名,没有空格/特殊字符:
感谢您的帮助:)
答案 0 :(得分:9)
看看ActiveSupport::Inflector.transliterate
,处理这种字符问题非常有用。请阅读:ActiveSupport::Inflector
然后,您可以执行以下操作:
ActiveSupport::Inflector.transliterate my_string.downcase.gsub(/\s/,"_")