params[:svn_path]
正在返回这样的 URL
http://svn.repos.mywebsite.com/testingtitle.documents
现在我只需要获取 url 的最后一部分,即testingtitle
.
我们如何得到它?
提前致谢
params[:svn_path]
正在返回这样的 URL
http://svn.repos.mywebsite.com/testingtitle.documents
现在我只需要获取 url 的最后一部分,即testingtitle
.
我们如何得到它?
提前致谢
您可以使用ruby 的Uri 模块
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"
您应该使用正则表达式来获得您所期望的。
您可以使用File.basename
; 例如
url = "http://svn.repos.mywebsite.com/testingtitle.documents"
ext = File.extname(url)
result = File.basename(url, ext)
的第二个参数basename
负责删除文件扩展名。result
将保持所需的结果。
使用正确的 URI 解析器 -
正如您所说,这将为您提供网址的最后一部分。
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
试试这个:
params[:svn_path].match(/.*\.com\/(.*)\..*$/)[1]
1.9.3p194 :009 > params[:svn_path].match(/.*\.com\/(.*)\..*$/)[1]
=> "testingtitle"
您可以使用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">
这将匹配任何单词字符的第一次出现(不包括 / 或 .)
Regexp
+groups
url = 'http://svn.repos.mywebsite.com/testingtitle.documents'
puts url.match(/com\/([a-z]+)/)[1]
#=> testingtitle