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