Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用ruby解析字符串路径名_Ruby On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails 用ruby解析字符串路径名

Ruby on rails 用ruby解析字符串路径名,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我的路径字符串类似于: /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/fil

我的路径字符串类似于:

/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"
参考:

  • 如果您正在寻找正则表达式解决方案(如标签中所示),请点击这里:

    irb> "/some/long/path/filename.ext1.ext2".gsub(%r{.*/|\..*$},'')
    => "filename"
    
  • 或不使用regexp的更有效解决方案:

    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"
      
    • 如果要剥离所有扩展(与正则表达式解决方案相同的行为):


  • 还有路径名类:

    require 'pathname'
    
    Pathname.new("/a/b/c/d.txt").basename.to_s
    => "d.txt"
    
    require 'pathname'
    
    Pathname.new("/a/b/c/d.txt").basename.to_s
    => "d.txt"