3

我想从英语或阿拉伯语字符串中清除特殊字符。例如,以下示例中的“–”是显示“?”的特殊字符 转换为 UTF-8 时。

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

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

4

1 回答 1

0

这在某种程度上是在重新发明轮子,但是您可以执行以下操作来获得您在问题中想要的输出:

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

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

  • 使用上面的黑名单方法可能意味着你留下你不想要的字符 - 使用像 \W 这样的白名单方法来捕获所有非单词字符更正常,这至少在 ruby​​ 1.9 中有效,但也许是导致你的原因1.8的问题
  • 在名称中留下空格可能会导致您出现问题,因此您可能应该至少删除“”和小写。
于 2012-10-16T21:06:45.353 回答