Ruby/Rails : 使用 URI 获取 url 扩展
Ruby/Rails : Get url extension with URI
目前我在使用 URI
解析 URL 时遇到一点问题
我试过使用这个代码:
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"
但我仍然很困惑,在示例 model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4
中获取没有 /
作为第一个字符的 path
并且在示例 [=16= 中仅获取没有域的路径和文件]
我必须使用正则表达式来获得以上输出吗?或者 URI 可以处理这个?
注:
我已经根据这个问题找到了如何在没有第一个字符的情况下获得 url 扩展 Ruby regexp: capture the path of url
URI class 有助于将 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 /
目前我在使用 URI
解析 URL 时遇到一点问题我试过使用这个代码:
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"
但我仍然很困惑,在示例 model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4
中获取没有 /
作为第一个字符的 path
并且在示例 [=16= 中仅获取没有域的路径和文件]
我必须使用正则表达式来获得以上输出吗?或者 URI 可以处理这个?
注:
我已经根据这个问题找到了如何在没有第一个字符的情况下获得 url 扩展 Ruby regexp: capture the path of url
URI class 有助于将 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 /