2012-09-10 2 views

Antwort

44

Ich würde einen richtigen URI-Parser wie die die URI module verwenden Sie den Pfad zu erhalten von der URI. Dann teilen Sie es bei / und bekommen den letzten Teil davon:

require 'uri' 

URI(uri).path.split('/').last 
+0

funktioniert nicht für mich mit der URL mu gab. – oldergod

+0

@oldergod Also, was bekommst du stattdessen? – Gumbo

+0

@muistooshort Sie können 'path.chomp ('/')' verwenden, um sie vor dem Teilen zu entfernen. – Gumbo

11
uri.split('/')[-1] 

oder

uri.split('/').last 
+0

Dies scheint der sauberste, einfachste Weg zu sein .. – Qasim

2

Versuchen Sie diese:

if url =~ /\/(.+?)$/ 
    last = $1 
end 

Oder

last = File.basename(url) 
2

Vom Terminal-Befehlszeile ein:

ruby -ruri -e "print File.basename(URI.parse('$URI').path)" 

aus Ihrem .rb Quelle:

require 'uri' 
theURI = 'http://user:[email protected]/foo/bar/baz/?lala=foo' 
uriPathTail = File.basename(URI.parse(theURI).path) # => baz 

es funktioniert gut mit was auch immer legal theURI du hattest.

Wenn Sie nicht URI.parse() verwenden, wird jeder Parameter der URL fälschlicherweise als das letzte Segment des URI verwendet.