【问题标题】:Best way to extract last segment of URI in Ruby在Ruby中提取URI最后一段的最佳方法
【发布时间】:2012-09-10 05:04:46
【问题描述】:

给定 URI 字符串,例如:

http://www.somesite.com/abc
http://www.somesite.com/alpha/beta/abc
http://www.somesite.com/alpha/abc

在 Ruby 中获取这些 URI 末尾的 abc 最优雅的方式是什么?

【问题讨论】:

  • @oldergod: http://example.com/where?is=pancakes/house%3F.
  • @muistooshort 你会怎么做?从最后一个 / 到第一个 ? 之前的所有内容?
  • @oldergod 见my answer
  • @oldergod:是的,请参阅 Gumbo 的回答。

标签: ruby string uri string-parsing


【解决方案1】:

我会使用像URI module 这样的适当的URI 解析器来从URI 中获取路径。然后在/拆分,得到最后一部分:

require 'uri'

URI(uri).path.split('/').last

【讨论】:

  • @oldergod 那么你会得到什么呢?
  • @muistooshort 您可以在拆分前使用path.chomp('/') 删除它们。
【解决方案2】:
uri.split('/')[-1] 

uri.split('/').last 

【讨论】:

    【解决方案3】:

    虽然这里的答案中建议的split 的所有用法都是合法的,但在我看来,@matsko's answer 的代码更清晰:

    last = File.basename(url)
    

    【讨论】:

      【解决方案4】:

      试试这些:

      if url =~ /\/(.+?)$/
        last = $1
      end
      

      或者

      last = File.basename(url)
      

      【讨论】:

        【解决方案5】:

        从终端命令行:

        ruby -ruri -e "print File.basename(URI.parse('$URI').path)"
        

        来自您的 .rb 源代码:

        require 'uri'
        theURI = 'http://user:pass@example.com/foo/bar/baz/?lala=foo'
        uriPathTail = File.basename(URI.parse(theURI).path) # => baz
        

        它适用于您拥有的任何合法的 theURI。

        如果不使用 URI.parse(),则 url 的任何参数都将被错误地视为 URI 的最后一段。

        【讨论】:

          【解决方案6】:

          如果该值是任何轨道字符串 + URI,那么下面的解决方案应该可以工作。

          首先,从字符串中提取URI:

          uri_string = URI.extract("Test 123 http://www.somesite.com/abc")
          

          上面的命令返回一个数组

          然后使用

          提取 URI 的最后一部分
          uri_string[0].split('/').last
          

          先决条件:需要将“uri”添加到 ruby​​ 脚本中

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-03-02
            • 2011-01-08
            • 1970-01-01
            • 1970-01-01
            • 2021-12-22
            • 2010-11-16
            • 2011-03-07
            相关资源
            最近更新 更多