我有一个类似于以下的路径字符串:
/some/long/path/filename.extension
我需要在Ruby中解析出“文件名”部分。
我有一个类似于以下的路径字符串:
/some/long/path/filename.extension
我需要在Ruby中解析出“文件名”部分。
File.basename
方法的后缀参数:# irb
irb(main):001:0> File.basename('/some/long/path/filename.extension', '.*')
=> "filename"
irb(main):002:0> File.basename('/some/long/path/filename.v1.extension', '.*')
=> "filename.v1"
该链接提供了Ruby编程语言中File类的文档。其中,方法M000026是File类的实例方法之一。这个方法可以将文件名作为参数,并返回一个布尔值,表示该文件是否存在。
还有Pathname类:
require 'pathname'
Pathname.new("/a/b/c/d.txt").basename.to_s
=> "d.txt"
if you are looking for regex solution (as in tags), here it is:
irb> "/some/long/path/filename.ext1.ext2".gsub(%r{.*/|\..*$},'')
=> "filename"
or more effective solution without regexp:
irb> path = "/some/long/path/filename.ext1.ext2"
=> "/some/long/path/filename.extension"
irb> filename = path[path.rindex('/')+1..-1]
=> "filename.ext1.ext2"
and to crop the extension(s):
if you want to crop the last one:
irb> filename[0,filename.rindex('.')]
=> "filename.ext1"
if you want to strip all the extensions (the same behaviour like the regex solution):
irb> filename[0,filename.index('.')]
=> "filename"