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

[] 内のビットを、é などのファイル名では適切でないと思われる文字に置き換えます。ただし、次の 2 つの点に注意してください。

  • 上記のようにブラックリスト アプローチを使用すると、不要な文字が残ることを意味する場合があります。\W のようなホワイトリスト アプローチを使用して、単語以外のすべての文字をキャッチするのがより一般的です。これは、少なくとも Ruby 1.9 では機能しますが、おそらくそれが原因1.8の問題
  • 名前にスペースを残すと問題が発生する可能性があるため、少なくとも " " と小文字を削除する必要があります。
于 2012-10-16T21:06:45.353 に答える