6

文字列を正規化してファイル名として渡す方法を見つけようとしています。

私はこれまでのところこれを持っています:

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

しかし、最初の問題: - 文字。この方法にはもっと問題があると思います。

私は名前を制御しません。名前の文字列には、アクセント、空白、および特殊文字を含めることができます。それらをすべて削除し、アクセントを対応する文字 ('é' => 'e') に置き換え、残りを '_' 文字に置き換えます。

名前は次のとおりです。

  • "Prélèvements - Routine"
  • 「カルネ・ド・サンテ」
  • ...

スペース/特殊文字のないファイル名のようにしたい:

  • "prelevements_routine"
  • 「カルネ・デ・サンテ」
  • ...

助けてくれてありがとう :)

4

2 に答える 2

11

を見てくださいActiveSupport::Inflector.transliterate。この種の文字の問題を処理するのに非常に便利です。そこを読んでください:ActiveSupport::Inflector

次に、次のようなことができます。

ActiveSupport::Inflector.transliterate my_string.downcase.gsub(/\s/,"_")
于 2012-11-21T23:47:39.243 に答える