【问题标题】:Remove specific parts from url从 url 中删除特定部分
【发布时间】:2015-05-13 22:02:35
【问题描述】:

假设我有一个这样的网址:

https://www.youtube.com/watch/3e4345?v=rwmEkvPBG1s

仅获得3e4345 部分的最佳和最短方法是什么? 有时它在? 中不包含其他参数 我不想使用任何宝石。

我所做的是:

    url =  url.split('/watch/')
    url =  url[1].split('/')[0].split('?')[0]

有没有更好的方法?谢谢

【问题讨论】:

    标签: ruby


    【解决方案1】:

    可能是最安全和最好的一个。使用 URI。

    URI("https://www.youtube.com/watch/34345?v=rwmEkvPBG1s").path.split("/").last
    

    更多信息请参考How to extract URL parameters from a URL with Ruby or Rails?

    【讨论】:

      【解决方案2】:

      您可以执行以下操作并使用 match 函数根据正则表达式语句查找匹配项。 [1] 处的值是正则表达式的第一个捕获。我已经包含了来自 regexper.com 的细分,以帮助说明表达式正在完成的工作。

      您会注意到 \d+ 周围的括号是在匹配时从 URL 中捕获数字的部分。

      url.to_s.match(/\/watch\/(\d+).*$/)[1]
      

      【讨论】:

      • 完美,但代码也可以是字符串。但是代码以/? 结尾,或者什么都没有。所以它可能是:wer34/hellower34/wer34?locale=3wer34。感谢您的帮助!
      【解决方案3】:
      x = "https://www.youtube.com/watch/34345?v=rwmEkvPBG1s"
      File.basename(URI(x).path)
      => "34345"
      

      【讨论】:

        猜你喜欢
        • 2014-09-04
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        • 2020-12-03
        • 2015-07-15
        • 2014-07-20
        相关资源
        最近更新 更多