2012-11-15 108 views
1

params[:svn_path]是返回一個URL這樣字符串操作[:東西]

http://svn.repos.mywebsite.com/testingtitle.documents 

現在我需要這是唯一testingtitle URL的最後一部分。

我們如何得到它?

在此先感謝

+4

http://rubular.com/r/irmRo84IFF – apneadiving

+0

@apneadiving這麼酷,你幫助我瞭解更多。它應該是一個答案。 – Thanh

+0

@KienThanh:然後發佈爲答案! – apneadiving

回答

3

可以使用紅寶石Uri module

uri = URI.parse("http://svn.repos.mywebsite.com/testingtitle.documents") 

path = uri.path #"/testingtitle.documents" 
path_with_no_slash = path.gsub("/", "") #"testingtitle.documents" 
array = path_with_no_slash.split(".") #["testingtitle", "documents"] 
result = array[0] #"testingtitle" 
+0

我喜歡這種方式,+1 – apneadiving

+0

+1來解釋它的作用。 – Thanh

+0

這就是我正在尋找的感謝 – Supersonic

1

試試這個:

params[:svn_path].match(/.*\.com\/(.*)\..*$/)[1]

1.9.3p194 :009 > params[:svn_path].match(/.*\.com\/(.*)\..*$/)[1] 
=> "testingtitle" 
2

您可以使用File.basename;例如

url = "http://svn.repos.mywebsite.com/testingtitle.documents" 
ext = File.extname(url) 
result = File.basename(url, ext) 

basename的第二個參數負責刪除文件擴展名。 result將保持所需的結果。

+0

使用'File.extname'作爲File.basename的第二個參數來剪切擴展名。 –

+0

@theTinMan巧妙!我冒昧地將其納入答案中。 – waldrumpus

1

您可以使用URI解析這個網址:

url = URI.parse('http://svn.repos.mywebsite.com/testingtitle.documents') 

,這將給你與這些變量的對象:

url.instance_variables #> [ :@scheme, :@user, :@password, :@host, :@port, :@path, :@query, :@opaque, :@registry, :@fragment, :@parser ] 

,然後只用在這樣path成分簡單的正則表達式:

url.path.match(/\w+/) #> #<MatchData "testingtitle"> 

其中將匹配任何單詞字符中第一次出現

2

通過適當的URI解析器(不包括/或) -

這會給你的URL的最後一部分,你已經聲明。

require 'uri' 

url  = "http://svn.repos.mywebsite.com/testingtitle.documents"  
last_part = URI(url).path.split('/').last # => testingtitle.documents 

但是您所提供的輸出將需要.

last_part.split('.').first # => testingtitle 

簡單的字符串操作上的最後一個部分多一點的操作,即分裂 -

url = "http://svn.repos.mywebsite.com/testingtitle.documents" 
url.split('/').last.split('.').first # => testingtitle 
+0

完美。我一直都在幫助我,謝謝 – Supersonic

+0

樂於幫助。乾杯! – saihgala

1

Regexp + groups

url = 'http://svn.repos.mywebsite.com/testingtitle.documents' 
puts url.match(/com\/([a-z]+)/)[1] 
#=> testingtitle