非常によく似た質問がすでにあります。ソリューションの 1 つは、次のようなコードを使用します。
string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s
スペース、ドット、ダッシュなども削除されることに気付くまで、これは驚くほど機能します。
最初のコードがどのように機能するかはよくわかりませんが、アクセントだけを取り除くようにすることはできますか? または、少なくとも保存する文字のリストが与えられますか? 正規表現に関する私の知識は少ないですが、試してみました (役に立ちませんでした):
/[^\-x00-\x7F]/n # So it would leave the dash alone
私はこのようなことをしようとしています:
string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
(/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s
凶悪?はい...
私も試しました:
iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"
助けてください?