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 /