Working with String

Hi need some help with string manipulation. I have a string representing
full path of a file. Example “/foo/foo.gif”. I need to just extract the
file name i.e “foo.gif” from this string. I also need to extract the
file type i.e “gif” from it in a separate string. Can anybody tell me
how to do it using regular expressions in Ruby. I know this can be done
using String.gsub, but i am too bad at reg expressions. And if someone
can point me to good source for learning reg expressions then it would
be really helpful.

Thanks

string. I also need to extract the file type i.e “gif” from
it in a separate string. Can anybody tell me how to do it
using regular expressions in Ruby. I know this can be done
using String.gsub, but i am too bad at reg expressions. And
if someone can point me to good source for learning reg
expressions then it would be really helpful.

Thanks

Posted via http://www.ruby-forum.com/.

irb(main):001:0> File.basename(‘/path/file.ext’)
=> “file.ext”
irb(main):002:0> File.extname(‘/path/file.ext’)
=> “.ext”
irb(main):003:0>

HTH,

Felix

Hi,

irb(main):035:0> “/foo/foo.gif”.split("/")[-1]
=> “foo.gif”
irb(main):038:0> “/foo/foo.gif”.split(".")[-1]
=> “gif”

Thanks Gavin that really helped.

On Aug 18, 6:03 am, Dipesh B. [email protected] wrote:

Hi need some help with string manipulation. I have a string representing
full path of a file. Example “/foo/foo.gif”. I need to just extract the
file name i.e “foo.gif” from this string. I also need to extract the
file type i.e “gif” from it in a separate string. Can anybody tell me
how to do it using regular expressions in Ruby. I know this can be done
using String.gsub, but i am too bad at reg expressions. And if someone
can point me to good source for learning reg expressions then it would
be really helpful.

irb(main):001:0> s = “/foo/bar/whee.gif”
=> “/foo/bar/whee.gif”
irb(main):002:0> s[ %r{[^/]+$} ]
=> “whee.gif”
irb(main):003:0> s[ %r{[^.]+$} ]
=> “gif”

Those expressions are:

  • One or more characters (as many as you can grab) that are not
    forward slash characters, followed by an end-of-line marker.
  • One or more characters (as many as you can grab) that are not period
    characters, followed by an end-of-line marker.

To save someone else from having to point it out, $ is not the end of
string, but just the end of a line. You could use \z to anchor truly
to the end of the string, but when I know the input will be single
line, I prefer $ for simplicity and portability.

Le samedi 18 août 2007 14:03, Dipesh B. a écrit :

Hi need some help with string manipulation. I have a string representing
full path of a file. Example “/foo/foo.gif”. I need to just extract the
file name i.e “foo.gif” from this string. I also need to extract the
file type i.e “gif” from it in a separate string. Can anybody tell me
how to do it using regular expressions in Ruby. I know this can be done
using String.gsub, but i am too bad at reg expressions. And if someone
can point me to good source for learning reg expressions then it would
be really helpful.

Thanks

You can also use a dedicated lib, for manipulating filenames : pathname

require ‘pathname’

p = Pathname.new “/foo/foo.gif”
puts p.basename # => foo.gif
puts p.extname # => “.gif”