2012-09-10 34 views
14

को देखते हुए यूआरआई तार यूआरआई के अंतिम खंड को निकालने के लिए?सबसे अच्छा तरीका है रूबी में तरह

+4

विभाजन ('/')। आखिरी? – oldergod

+3

@oldergod: 'http: //example.com/where? = = पेनकेक्स/घर% 3 एफ' है। –

+0

@muistooshort आप यह कैसे करेंगे? पहले '?' से पहले अंतिम '/' से सबकुछ लेना? – oldergod

उत्तर

44

मैं URI module पथ प्राप्त करने के लिए एक की तरह एक उचित यूआरआई पार्सर का प्रयोग करेंगे यूआरआई से तो फिर यह / में विभाजित है और यह के अंतिम भाग मिलती है:

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

यह अच्छी तरह से काम करता है: अपने .rb स्रोत अंदर से

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

:

require 'uri' 

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

url mu के साथ मेरे लिए काम नहीं कर रहा है। – oldergod

+0

@oldergod तो आप इसके बजाय क्या प्राप्त करते हैं? – Gumbo

+0

@muistooshort आप विभाजन से पहले उन्हें हटाने के लिए 'path.chomp ('/') 'का उपयोग कर सकते हैं। – Gumbo

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

या

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

यह ऐसा करने का सबसे साफ, सरल तरीका प्रतीत होता है .. – Qasim

2

इन का प्रयास करें:

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

या

last = File.basename(url) 
2

टर्मिनल कमांड लाइन से आपके पास जो भी कानूनी था, उसके साथ।

यदि आप URI.parse() का उपयोग नहीं करते हैं, तो यूआरएल के किसी भी पैरामीटर को यूआरआई के अंतिम खंड के रूप में गलत तरीके से लिया जाएगा।