Rubyには任意の文字列があり、有効なUnix/Linuxファイル名に変換したいと思っています。それは、それが始まった文字列として視覚的に認識可能である限り、最終的な形でどのように見えるかは重要ではありません。いくつかの可能な例:Ruby文字列を* nixファイル名対応文字列に変換する
これを達成する(またはこれに近い)何か組み込みのファイルライブラリがありますか?
Rubyには任意の文字列があり、有効なUnix/Linuxファイル名に変換したいと思っています。それは、それが始まった文字列として視覚的に認識可能である限り、最終的な形でどのように見えるかは重要ではありません。いくつかの可能な例:Ruby文字列を* nixファイル名対応文字列に変換する
これを達成する(またはこれに近い)何か組み込みのファイルライブラリがありますか?
あなたの仕様では、これを正規表現の置き換えで行うことができます。この正規表現は、基本的な文字と数字以外のすべての文字にマッチします:あなたの例に示すように
s/[^\w\s_-]+//g
これは、単語の間に余分な空白を削除します:
s/(^|\b\s)\s+($|\s?\b)/\\1\\2/g
そして最後に、残りのスペースを置き換えます
s/\s+/_/g
ここではRubyである:
アンダースコアで最初に、純粋にルビーで尋ねられたことが分かりました.2番目は同じ目的ではありませんが(* nixファイル互換)、Railsを使用している場合はparameterize
というメソッドが役に立ちます。レールコンソールで
:
"Here's my string!".parameterize => "here-s-my-string"
"* is an asterisk, you see".parameterize => "is-an-asterisk-you-see"
私はパラメータ化は、URL仕様に準拠していると、:)ファイル名と同様
を働くかもしれないと思うあなたはここについての詳細を見ることができます: http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
他にも役立つ方法がたくさんあります。
ほとんどのLinuxファイルシステムでは、ファイル名に許されない文字は '\ 0'と'/'です。 '*はアスタリスクです、あなたは'完全に有効なファイル名です。 – sepp2k
@ sepp2k:良い点。その場合、誰かが自分の髪を引き抜くことなく移動または削除することができるファイルを作成したいと思っています:) – jrdioko