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

···

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

···

-----Original Message-----
From: list-bounce@example.com
[mailto:list-bounce@example.com] On Behalf Of Dipesh Batheja
Sent: Saturday, August 18, 2007 5:03 AM
To: ruby-talk ML
Subject: 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
--
Posted via http://www.ruby-forum.com/\.

Hi,

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

···

On Aug 18, 5:03 pm, Dipesh Batheja <dipesh_bath...@yahoo.com> 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.

Thanks
--
Posted viahttp://www.ruby-forum.com/.

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.

···

On Aug 18, 6:03 am, Dipesh Batheja <dipesh_bath...@yahoo.com> 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.

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"

···

Le samedi 18 août 2007 14:03, Dipesh Batheja 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

--
Olivier Renaud

Thanks Gavin that really helped.

···

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