在Linux下,在Ruby中打开一个不区分大小写的文件
发布时间:2020-12-13 18:36:19 所属栏目:Linux 来源:网络整理
导读:有没有办法在 Linux下在 Ruby中打开文件大小写?例如,给定字符串foo.txt,可以打开文件FOO.txt吗? 一种可能的方法是读取目录中的所有文件名,并手动搜索列表中所需的文件,但是我正在寻找一种更直接的方法. 解决方法 虽然你不能打开大小写不敏感,你可以写你所
有没有办法在
Linux下在
Ruby中打开文件大小写?例如,给定字符串foo.txt,可以打开文件FOO.txt吗?
一种可能的方法是读取目录中的所有文件名,并手动搜索列表中所需的文件,但是我正在寻找一种更直接的方法. 解决方法
虽然你不能打开大小写不敏感,你可以写你所建议的目录搜索非常简洁.例如
filename = Dir.glob('foo.txt',File::FNM_CASEFOLD).first if filename # use filename here else # no matching file end 请注意,虽然documentation suggests that FNM_CASEFOLD can’t be used with glob这似乎是不正确或过时的. 备择方案 如果您关心使用FNM_CASEFOLD,那么有几个选择是: filename = Dir.glob('*').find { |f| f.downcase == 'foo.txt' } 或者写一个方法来为给定的文件名构建一个不区分大小写的glob: def ci_glob(filename) glob = '' filename.each_char do |c| glob += c.downcase != c.upcase ? "[#{c.downcase}#{c.upcase}]" : c end glob end irb(main):024:0> ci_glob('foo.txt') => "[fF][oO][oO].[tT][xX][tT]" 然后你可以做: filename = Dir.glob(ci_glob('foo.txt')).first (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |