У меня есть пользовательские записи как имена файлов. Конечно, это не хорошая идея, таким образом, я хочу отбросить все кроме [a-z]
, [A-Z]
, [0-9]
, _
и -
.
Например:
my§document$is°° very&interesting___thisIs%nice445.doc.pdf
должен стать
my_document_is_____very_interesting___thisIs_nice445_doc.pdf
и затем идеально
my_document_is_very_interesting_thisIs_nice445_doc.pdf
Существует ли хороший и изящный путь к тому, чтобы сделать это?
Из http://devblog.muziboo.com/2008/06/17/attachment-fu-sanitize-filename-regex-and-unicode-gotcha/ :
def sanitize_filename(filename)
returning filename.strip do |name|
# NOTE: File.basename doesn't work right with Windows paths on Unix
# get only the filename, not the whole path
name.gsub!(/^.*(\\|\/)/, '')
# Strip out the non-ascii character
name.gsub!(/[^0-9A-Za-z.\-]/, '_')
end
end