2011-08-24 154 views
4

解析字符串路径我有类似的路径字符串:红宝石

/some/long/path/filename.extension 

,我需要出去解析“文件名”部分中的红宝石File.basename方法

回答

2
  1. ,如果你正在寻找的正则表达式的解决方案(如标签),那就是:

    irb> "/some/long/path/filename.ext1.ext2".gsub(%r{.*/|\..*$},'') 
    => "filename" 
    
  2. 或更有效的解决方案,而正则表达式:

    irb> path = "/some/long/path/filename.ext1.ext2" 
    => "/some/long/path/filename.extension" 
    irb> filename = path[path.rindex('/')+1..-1] 
    => "filename.ext1.ext2" 
    

    和裁剪扩展(S):

    • ,如果你要裁剪的最后一个:

      irb> filename[0,filename.rindex('.')] 
      => "filename.ext1" 
      
      ,如果你想要去除所有扩展(如正则表达式的解决方案相同的行为)
    • irb> filename[0,filename.index('.')] 
      => "filename" 
      
6

还有一个路径名类:

require 'pathname' 

Pathname.new("https://stackoverflow.com/a/b/c/d.txt").basename.to_s 
=> "d.txt"