Rails:CLEAN来自英语或阿拉伯语字符串的特殊字符

时间:2012-09-10 06:54:55

标签: ruby-on-rails ruby utf-8

我想清除英语或阿拉伯语字符串中的特殊字符。例如," - "在下面的示例中是一个特殊字符,显示"?"转换为UTF-8时。

文件名:1-Mechanical Drawings – Part 1应该像1-Mechanical Drawings Part 1

السلطات العراقية تعلنé应为السلطات العراقية تعلن,其中é为特殊字符,应从字符串中删除。

1 个答案:

答案 0 :(得分:0)

这在某种程度上重新发明了轮子,但你可以做这样的事情来获得你想要的输出问题:

def clean_file name
  result = File.basename(name,".*")
  result.gsub!(/[é–]\s?/,'')
  result
end

将[]中的位替换为您认为不适合é等文件名的字符。但要注意两件事:

  • 使用上面的黑名单方法可能意味着你留下你不想要的字符 - 使用白名单方法更为正常,比如\ W来捕捉所有非字字符,至少在ruby 1.9中有效,但也许是什么导致你在1.8
  • 上出现问题
  • 在名称中留下空格可能会导致问题,因此您应该至少删除“”和“down”。