文件/文件夹名称的无效字符过滤器?(红宝石)

Rad*_*dek 4 ruby filenames

我的脚本从网上下载文件,然后将它们保存在从同一个Web服务器获取的名称下.我需要在Windows NTFS下为文件/文件夹名称过滤 /删除无效字符.

我也很乐意使用多平台过滤器.

注意:类似的东西htmlentities会很棒....

liw*_*iwp 21

就像Geo所说,通过使用gsub你可以轻松地将所有无效字符转换为有效字符.例如:

file_names.map! do |f|
  f.gsub(/[<invalid characters>]/, '_')
end
Run Code Online (Sandbox Code Playgroud)

您需要替换<invalid characters>文件系统中不允许的文件名可能包含的所有可能字符.在上面的代码中,每个无效字符都替换为a _.

维基百科告诉我们NTFS上不允许使用以下字符:

  • U + 0000(NUL)
  • /(斜线)
  • \(反斜杠)
  • :(冒号)
  • *(星号)
  • ?(问号)
  • "(引用)
  • <(小于)
  • (比...更棒)

  • | (管)

所以你的gsub电话可能是这样的:

file_names.map! { |f| f.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_') }
Run Code Online (Sandbox Code Playgroud)

用下划线替换所有无效字符.


Hit*_*eeb 14

filename_string.gsub(/[^\w\.]/, '_')
Run Code Online (Sandbox Code Playgroud)

说明:替换除字符 (字母,数字,下划线)点之外的所有内容