使用ruby解析字符串路径名
我有一个类似于的路径字符串:
/some/long/path/filename.extension
我需要在ruby中解析“filename”部分
使用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"
参考: http : //www.ruby-doc.org/core/classes/File.html#M000026
还有Pathname类:
require 'pathname' Pathname.new("/a/b/c/d.txt").basename.to_s => "d.txt"
-
如果您正在寻找正则表达式解决方案(如在标签中),这里是:
irb> "/some/long/path/filename.ext1.ext2".gsub(%r{.*/|\..*$},'') => "filename"
-
或者没有正则表达式的更有效的解决方案:
irb> path = "/some/long/path/filename.ext1.ext2" => "/some/long/path/filename.extension" irb> filename = path[path.rindex('/')+1..-1] => "filename.ext1.ext2"
并裁剪扩展名:
-
如果你想裁剪最后一个:
irb> filename[0,filename.rindex('.')] => "filename.ext1"
-
如果要删除所有扩展(与正则表达式解决方案相同的行为):
irb> filename[0,filename.index('.')] => "filename"
-