是否有一个不区分大小写后缀的File.basename?

时间:2013-03-19 08:25:12

标签: ruby

http://www.ruby-doc.org/core-2.0/File.html

File.basename("/home/gumby/work/Hello.txt")           #=> "Hello.txt"
File.basename("/home/gumby/work/Hello.txt", ".txt")   #=> "Hello"

是否存在不区分大小写后缀的API?我想要以下内容:

File.basename("/home/gumby/work/Hello.TXT", ".txt")   #=> "Hello.TXT"

返回"Hello",而不是"Hello.TXT""hello"

3 个答案:

答案 0 :(得分:2)

不幸的是,没有。但是,File.basename中真正与平台无关的部分在于路径操作,而不是后缀。因此,您可以通过gsub:

轻松替换后缀删除
File.basename(my_path).gsub(/\.txt$/i, '')

答案 1 :(得分:0)

怎么回事?

File.basename("ab.TXT","txt".upcase)
#=> "ab."
File.basename("ab.txt","TXT".downcase)
#=> "ab."

答案 2 :(得分:-1)

File.basename(file, File.extname(file))