在Linux下,在Ruby中打开一个不区分大小写的文件

在Linux下,在Ruby中打开一个不区分大小写的文件,第1张

概述有没有办法在 Linux下在 Ruby中打开文件大小写?例如,给定字符串foo.txt,可以打开文件FOO.txt吗? 一种可能的方法是读取目录中的所有文件名,并手动搜索列表中所需的文件,但是我正在寻找一种更直接的方法. 虽然你不能打开大小写不敏感,你可以写你所建议的目录搜索非常简洁.例如 filename = Dir.glob('foo.txt', File::FNM_CASEFOLD).fir 有没有办法在 Linux下在 Ruby中打开文件大小写?例如,给定字符串foo.txt,可以打开文件FOO.txt吗?

一种可能的方法是读取目录中的所有文件名,并手动搜索列表中所需的文件,但是我正在寻找一种更直接的方法.

解决方法 虽然你不能打开大小写不敏感,你可以写你所建议的目录搜索非常简洁.例如
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中打开一个不区分大小写的文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存