2012-01-11 18 views
0

我想找到這個URL擴展.html如何使用Ruby 1.8.7從URL獲得擴展名?

http://testasp.vulnweb.com/Templatize.asp?item=html/about.html 
+0

我已經嘗試過類URI以及類路徑名在紅寶石....但我仍然沒有從URI獲得.html擴展名...我可以很容易地從這個URI找到.asp擴展名,但我不想那... – 2012-01-11 06:26:27

+0

發表一些代碼。 – 2012-01-11 06:27:17

+0

require'uri' require'pathname' pathname = Pathname.new(link) extension = pathname.extname – 2012-01-11 06:32:12

回答

-2
對於大多數編程語言

通用的答案(我不是一個紅寶石的傢伙) -

String.substring(String.lastIndexOf("."), String.length); 
+0

Thanx for replay,但我必須遍歷URI數組,其中一些URI可能不包含任何路徑.. .so這種類型的代碼可能會引發一些錯誤 – 2012-01-11 06:38:14

+0

String queryString = uri.split(「?」); queryString.substring(...); [上面的代碼];放入for循環;將工作。但是發佈一些你之前嘗試過的代碼。修改代碼很容易。 – Acn 2012-01-11 06:44:46

+0

我已經試過代碼需要'uri'需要'路徑名'路徑名=路徑名。新(鏈接)擴展=路徑名。文本名....它是在紅寶石... – 2012-01-11 06:47:39

2

也許是這樣的:

URI.parse(url).query[/\.\w+/] 
+0

thanx爲您的重播它的作品.... – 2012-01-11 06:55:56

+0

別客氣。不要忘記標記這個答案是正確的,並將它投票:) – pguardiario 2012-01-11 08:55:05

0

Ruby有URI模塊,它是標準配置的一部分,加上Addressable寶石:

url = 'http://testasp.vulnweb.com/Templatize.asp?item=html/about.html' 

require 'uri' 
uri = URI.parse(url) 
queries = Hash[uri.query.split('&').map{ |q| q.split('=') }] 
puts queries['item'] 

require "addressable/uri" 
uri = Addressable::URI.parse(url) 
puts uri.query_values['item'] 

雙方將輸出:

html/about.html 

運行時。

URI很方便,但是可尋址功能非常強大且功能全面。如果我需要做很多URL解析或操作,則可以使用Addressable。

一旦你有html/about.html可以提取擴展幾個方面:

path = 'html/about.html' 

path[/(\..+)$/, 1] # => ".html" 
path.split('.').last # => "html" 
File.extname(path) # => ".html" 

注意使用split刪除.所以它需要再次前置到html

相關問題