Parsing a string named ruby

I have a path string similar to:

/some/long/path/filename.extension 

and I need to parse the part of "filename" in ruby

+4
source share
3 answers

Use the suffix parameter of the File.basename method:

 # 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" 

Link: http://www.ruby-doc.org/core/classes/File.html#M000026

+9
source

There is also a Pathname class:

 require 'pathname' Pathname.new("/a/b/c/d.txt").basename.to_s => "d.txt" 
+6
source
  • if you are looking for a regex solution (like in tags), here it is:

     irb> "/some/long/path/filename.ext1.ext2".gsub(%r{.*/|\..*$},'') => "filename" 
  • or a more efficient solution without regular expression:

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

    and crop extension (s):

    • if you want to trim the last one:

       irb> filename[0,filename.rindex('.')] => "filename.ext1" 
    • if you want to remove all extensions (the same behavior as resolving regular expressions):

       irb> filename[0,filename.index('.')] => "filename" 
+2
source

All Articles