Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 参数[:某物]中的字符串操作_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 参数[:某物]中的字符串操作

Ruby 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来获

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来获得所需的内容

您可以使用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。