Given URI strings like:
http://www.somesite.com/abc
http://www.somesite.com/alpha/beta/abc
http://www.somesite.com/alpha/abc
What's the most elegant way in Ruby to grab the abc
at the end of these URIs?
Given URI strings like:
http://www.somesite.com/abc
http://www.somesite.com/alpha/beta/abc
http://www.somesite.com/alpha/abc
What's the most elegant way in Ruby to grab the abc
at the end of these URIs?
I would use a proper URI parser like the one of the URI module to get the path from the URI. Then split it at /
and get the last part of it:
require 'uri'
URI(uri).path.split('/').last
path.chomp('/')
to remove them before splitting. –
Electrosurgery While all the usages of split
suggested in the answers here are legit, in my opinion @matsko's answer is the one with the clearer code to read:
last = File.basename(url)
Try these:
if url =~ /\/(.+?)$/
last = $1
end
Or
last = File.basename(url)
From the Terminal command line:
ruby -ruri -e "print File.basename(URI.parse('$URI').path)"
from inside your .rb source:
require 'uri'
theURI = 'http://user:[email protected]/foo/bar/baz/?lala=foo'
uriPathTail = File.basename(URI.parse(theURI).path) # => baz
it works well with whatever legal theURI you had.
If you don't use URI.parse(), any parameter to the url will be wrongly taken as the last segment of the URI.
If the value is any orbitary string + URI, then the below solution should work.
First, extract URI from the string:
uri_string = URI.extract("Test 123 http://www.somesite.com/abc")
Above command returns an array
Then extract the last part of the URI using
uri_string[0].split('/').last
prerequisite: require "uri" needs to be added to the ruby script
© 2022 - 2024 — McMap. All rights reserved.
http://example.com/where?is=pancakes/house%3F
. – Augustineaugustinian/
before the first?
? – Chiquita