2012-09-10 26 views
14

Với chuỗi URI như:Cách tốt nhất để giải nén phân khúc cuối cùng của URI trong Ruby

http://www.somesite.com/abc 
http://www.somesite.com/alpha/beta/abc 
http://www.somesite.com/alpha/abc 

cách thanh lịch nhất trong Ruby để lấy abc vào cuối những URI là gì?

+4

chia nhỏ ('/'). – oldergod

+3

@oldergod: 'http: //example.com/where? Is = pancakes/house% 3F'. –

+0

@muistooshort bạn sẽ làm như thế nào? lấy mọi thứ từ '/' cuối cùng trước khi '? 'đầu tiên? – oldergod

Trả lời

44

Tôi sẽ sử dụng một cú pháp URI đúng như một trong những URI module để có được những con đường từ URI. Sau đó chia nó ở / và nhận được phần cuối cùng của nó:

require 'uri' 

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

không hoạt động cho tôi với mu url đã cung cấp. – oldergod

+0

@oldergod Vì vậy, bạn sẽ nhận được gì? – Gumbo

+0

@muistooshort Bạn có thể sử dụng 'path.chomp ('/')' để loại bỏ chúng trước khi tách. – Gumbo

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

hoặc

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

Điều này có vẻ là cách làm sạch nhất, đơn giản nhất .. – Qasim

2

Hãy thử những:

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

Hoặc

last = File.basename(url) 
2

Từ dòng lệnh Terminal:

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

từ inside source rb của bạn:

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

nó hoạt động tốt với bất kỳ pháp lý nào mà bạn có.

Nếu bạn không sử dụng URI.parse(), bất kỳ tham số nào đến url sẽ bị coi là sai phân đoạn cuối cùng của URI.

Các vấn đề liên quan