一种可能的方法是读取目录中的所有文件名,并手动搜索列表中所需的文件,但是我正在寻找一种更直接的方法.
解决方法 虽然你不能打开大小写不敏感,你可以写你所建议的目录搜索非常简洁.例如filename = Dir.glob('foo.txt',file::FNM_CASEFolD).firstif filename # use filename hereelse # no matching fileend
请注意,虽然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 globendirb(main):024:0> ci_glob('foo.txt')=> "[fF][oO][oO].[tT][xX][tT]"
然后你可以做:
filename = Dir.glob(ci_glob('foo.txt')).first总结
以上是内存溢出为你收集整理的在Linux下,在Ruby中打开一个不区分大小写的文件全部内容,希望文章能够帮你解决在Linux下,在Ruby中打开一个不区分大小写的文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)