这不仅仅是一个字符串,它是一个URL.URL有特殊注意事项,因此编写的类只是为了使用它们.
考虑一下URL是什么:它是对远程"资源"的引用,通常是某种文件.所以,我们可以使用一些文件名操作:
File.basename('http://www.youtube.com/channel/xxxxxxxxxxxxxx')
# => "xxxxxxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)
File的basename方法不是很聪明,因为它只寻找像'/'这样的目录定界符.我们可以split用来完成同样的事情:
'http://www.youtube.com/channel/xxxxxxxxxxxxxx'.split('/').last
# => "xxxxxxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)
但是,一些网址查询或搜索信息,与片段,使双方沿basename和split分崩离析:
File.basename('http://www.youtube.com/channel/xxxxxxxxxxxxxx?foo=bar#1')
# => "xxxxxxxxxxxxxx?foo=bar#1"
'http://www.youtube.com/channel/xxxxxxxxxxxxxx?foo=bar#1'.split('/').last
# => "xxxxxxxxxxxxxx?foo=bar#1"
Run Code Online (Sandbox Code Playgroud)
所以简单地将其视为文件名将无法正常工作并将其剥离,您可以使用URL解析器.使用Ruby的内置URI类将有助于:
require 'uri'
path = URI.parse('http://www.youtube.com/channel/xxxxxxxxxxxxxx?foo=bar#1').path # => "/channel/xxxxxxxxxxxxxx"
File.basename(path) # => "xxxxxxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |