2013-03-19 22 views
1

http://www.ruby-doc.org/core-2.0/File.html有沒有不區分大小寫後綴的File.basename?

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"

+2

難道你不能一蹴而就嗎?你真的需要原始案例嗎? – 2013-03-19 08:27:22

+0

是的,我需要原始案例。 – ohho 2013-03-19 08:29:47

回答

2

不幸的是,沒有。然而,File.basename真正與平臺無關的部分在於路徑操作,而不是後綴。你可以因此容易被GSUB更換後綴去除:

File.basename(my_path).gsub(/\.txt$/i, '') 
-1
File.basename(file, File.extname(file)) 
+0

這將刪除文件擴展名,無論它是什麼。 – sawa 2013-03-19 08:37:35

+0

這正是我想要的,刪除不區分大小寫的後綴。 – ohho 2013-03-19 08:41:02

+1

這與你在問題中有所不同。 – sawa 2013-03-19 09:05:08

0

怎麼回事?

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

爲什麼downvote?請解釋請 – 2013-03-19 08:35:04

+0

查看問題下的評論。 – 2013-03-19 10:17:06

+0

@SergioTulentsev他要求看到的,我也是這樣做的。當然有一件事'File.basename(「/ home/gumby/work/Hello.TXT」,「.txt」)#=>「Hello.TXT」'永遠不可能。它只會給出文件名,即'Hello'。事情仍然是擴展匹配。根據他的問題答案是正確的。 – 2013-03-19 10:22:38