Ruby中提取URI最后一段的最佳方法



给定的URI字符串,如:

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

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

我会使用一个合适的URI解析器,比如URI模块,来获取URI的路径。然后在/进行拆分,得到最后一部分:

require 'uri'
URI(uri).path.split('/').last
uri.split('/')[-1] 

uri.split('/').last 

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

last = File.basename(url)

试试这些:

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

last = File.basename(url)

从终端命令行:

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的最后一段。

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

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

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

以上命令返回一个数组

然后使用提取URI的最后一部分

uri_string[0].split('/').last

先决条件:require"uri"需要添加到ruby脚本

相关内容

最新更新