Ruby on rails 参数[:某物]中的字符串操作
params[:svn_path]返回如下URLRuby on rails 参数[:某物]中的字符串操作,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,params[:svn_path]返回如下URL http://svn.repos.mywebsite.com/testingtitle.documents 现在我只需要得到url的最后一部分testingtitle 我们如何得到它 提前感谢试试这个: 参数[:svn\u path].match/*\.com\/.\..*$/[1] 试试这个: 参数[:svn\u path].match/*\.com\/.\..*$/[1] 您应该使用regexp来获得所需的内容 您应该使用regexp来获
http://svn.repos.mywebsite.com/testingtitle.documents
现在我只需要得到url的最后一部分testingtitle
我们如何得到它
提前感谢试试这个:
参数[:svn\u path].match/*\.com\/.\..*$/[1]
试试这个:
参数[:svn\u path].match/*\.com\/.\..*$/[1]
您应该使用regexp来获得所需的内容
您应该使用regexp来获得所需的内容 您可以使用ruby 你可以使用ruby 您可以使用File.basename;比如说
url = "http://svn.repos.mywebsite.com/testingtitle.documents"
ext = File.extname(url)
result = File.basename(url, ext)
basename的第二个参数负责删除文件扩展名。结果将保存所需的结果。您可以使用File.basename;比如说
url = "http://svn.repos.mywebsite.com/testingtitle.documents"
ext = File.extname(url)
result = File.basename(url, ext)
basename的第二个参数负责删除文件扩展名。结果将保存所需的结果。您可以使用URI解析此url:
url = URI.parse('http://svn.repos.mywebsite.com/testingtitle.documents')
这将为您提供一个包含以下变量的对象:
url.instance_variables #> [ :@scheme, :@user, :@password, :@host, :@port, :@path, :@query, :@opaque, :@registry, :@fragment, :@parser ]
然后在路径组件上使用一个简单的正则表达式,如下所示:
url.path.match(/\w+/) #> #<MatchData "testingtitle">
它将匹配不包括/或的任何单词字符的第一次出现。您可以使用URI解析此url:
url = URI.parse('http://svn.repos.mywebsite.com/testingtitle.documents')
这将为您提供一个包含以下变量的对象:
url.instance_variables #> [ :@scheme, :@user, :@password, :@host, :@port, :@path, :@query, :@opaque, :@registry, :@fragment, :@parser ]
然后在路径组件上使用一个简单的正则表达式,如下所示:
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
但是,您提供的输出将需要对最后一部分进行更多的操作,即拆分
简单字符串操作-
使用适当的URI解析器-
这将为您提供url的最后一部分,如您所述
require 'uri'
url = "http://svn.repos.mywebsite.com/testingtitle.documents"
last_part = URI(url).path.split('/').last # => testingtitle.documents
但是,您提供的输出将需要对最后一部分进行更多的操作,即拆分
简单字符串操作-
Regexp+组
Regexp+组
@你这么酷,帮我学到了更多。这应该是一个答案。@KienThanh:那就贴成答案吧@我今天学到了一些东西thanks@apneadiving太酷了,你帮我学到了更多。这应该是一个答案。@KienThanh:那就贴成答案吧@A阅读-今天我学到了一些东西,感谢使用File.extname作为File.basename的第二个参数来编辑扩展名。@theTinMan很有创意!我冒昧地在答案中加入了这一点。使用File.extname作为File.basename的第二个参数剪裁扩展名。@theTinMan巧妙!我冒昧地在答案中加入了这一点。小心分割:如果文件名包含多个点my.file.txt,这将只返回我的第一部分。这是重用文件的basename和extname的好地方。extname只返回文件名中的最后一个.ext,因此我们不需要拆分文件或担心文件太多。实际上,如果可能的话,我更喜欢/建议使用File的方法来操纵路径,因为它们经过了很好的测试,如果您希望将所有File和FileUtil方法捆绑在一个模块中,请使用路径名。小心分割:如果文件名包含多个点my.File.txt,则将只返回my的第一部分。这是重用文件的basename和extname的好地方。extname只返回文件名中的最后一个.ext,因此我们不需要拆分文件或担心文件太多。实际上,如果可能的话,我更喜欢/建议使用File的方法来操作路径,因为它们经过了良好的测试,如果您希望将File和FileUtil的所有方法捆绑在一个模块中,则使用Pathname。