2012-09-10 57 views
14

定的URI的字符串,如:最好的方法來提取URI的最後一段用Ruby

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

什麼是Ruby中最優雅的方式來獲取abc在這些URI的終結?

+4

split('/')。last? – oldergod

+3

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

+0

@ muistooshort你會怎麼做?從第一個'?'之前的最後一個'/'開始? – oldergod

回答

44

我會用一個適當的URI解析器像URI module獲得路徑的一個來自URI。然後,它在/分裂和獲得它的最後一部分:從您的.rb源裏面

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

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

它工作得很好

require 'uri' 

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

不適合我與URL畝給予。 – 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(),則該URL的任何參數都將被錯誤地視爲URI的最後一部分。