目前我使用URI
解析网址时遇到了一些问题我试图使用此代码:
uri = URI::parse(Model.first.media)
#<URI::HTTPS https://my-bucket.s3.amazonaws.com/model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4>
uri.path
"/model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4"
File.basename(Model.first.media, '.mp4')
"cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4"
但我仍然感到困惑的是,path
没有/
作为示例model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4
中的第一个字符,并且只获取没有域的路径和示例{{1}中的文件}
我必须使用正则表达式来获得以上输出吗?或URI可以处理这个?
注意:
我已经找到了如何在没有第一个字符的基础上获取网址扩展Ruby regexp: capture the path of url
答案 0 :(得分:1)
URI类有助于将URL拆分为组件,并为您提供类似
的方法[:scheme, :userinfo, :host, :port, :path, :query, :fragment]
如果您只是需要摆脱第一个斜杠,那么这很简单,没有正则表达式。
uri.path[1..-1] #gives all string characters except the 0 index.
但你甚至可以逃脱:
Model.first.media.split('.com/').last # don't even need URI parse.
对于问题的最后一部分,您可以这样做:
File.dirname(uri.path) # will return => "/model/media/41"
File.dirname(uri.path)[1..-1] # if you want to remove leading /