params[:svn_path]
是返回一個URL這樣字符串操作[:東西]
http://svn.repos.mywebsite.com/testingtitle.documents
現在我需要這是唯一testingtitle
URL的最後一部分。
我們如何得到它?
在此先感謝
params[:svn_path]
是返回一個URL這樣字符串操作[:東西]
http://svn.repos.mywebsite.com/testingtitle.documents
現在我需要這是唯一testingtitle
URL的最後一部分。
我們如何得到它?
在此先感謝
可以使用紅寶石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"
試試這個:
params[:svn_path].match(/.*\.com\/(.*)\..*$/)[1]
1.9.3p194 :009 > params[:svn_path].match(/.*\.com\/(.*)\..*$/)[1]
=> "testingtitle"
您應該使用正則表達式來得到你所期望的。
您可以使用File.basename
;例如
url = "http://svn.repos.mywebsite.com/testingtitle.documents"
ext = File.extname(url)
result = File.basename(url, ext)
basename
的第二個參數負責刪除文件擴展名。 result
將保持所需的結果。
使用'File.extname'作爲File.basename的第二個參數來剪切擴展名。 –
@theTinMan巧妙!我冒昧地將其納入答案中。 – waldrumpus
您可以使用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">
其中將匹配任何單詞字符中第一次出現
通過適當的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
完美。我一直都在幫助我,謝謝 – Supersonic
樂於幫助。乾杯! – saihgala
Regexp
+ groups
url = 'http://svn.repos.mywebsite.com/testingtitle.documents'
puts url.match(/com\/([a-z]+)/)[1]
#=> testingtitle
http://rubular.com/r/irmRo84IFF – apneadiving
@apneadiving這麼酷,你幫助我瞭解更多。它應該是一個答案。 – Thanh
@KienThanh:然後發佈爲答案! – apneadiving