2012-09-10 16 views
14

Verilen URI dizeleri URI son segment ayıklanacak?iyi yolu Ruby gibi

+4

bölünmüş ('/') son? – oldergod

+3

@oldergod: 'http: //example.com/bu yer = krep/house% 3F'. –

+0

@muistooshort Bunu nasıl yaparsınız? her şeyden önce son '/' ilk 'den' almak? – oldergod

cevap

44

Ben yolunu almak için URI module biri gibi uygun bir URI ayrıştırıcı kullanmak istiyorsunuz URI'den. Sonra / de bölmek ve bunun son bölümünü almak: iyi çalışıyor

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

: En .rb kaynağından içeriden

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

: Terminal Komut satırından

require 'uri' 

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

url mu ile çalışmam için bana verdi. – oldergod

+0

@oldergod Peki bunun yerine ne alıyorsunuz? – Gumbo

+0

@muistooshort Parçalara ayırmadan önce bunları kaldırmak için 'path.chomp ('/')' kullanabilirsiniz. – Gumbo

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

veya

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

Bunu yapmanın en temiz, en basit yolu gibi görünüyor .. – Qasim

2

bu deneyin:

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

Ya

last = File.basename(url) 
2

Sahip olduğun yasal sebeplerle.

URI.parse() yöntemini kullanmazsanız, URL'deki herhangi bir parametre, URI'nin son segmenti olarak yanlış olarak alınacaktır.