24

给定 URI 字符串,例如:

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

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

4

6 回答 6

58

我会使用适当的 URI 解析器,比如URI 模块之一来从 URI 中获取路径。然后将其拆分/并获取它的最后一部分:

require 'uri'

URI(uri).path.split('/').last
于 2012-09-10T05:13:52.333 回答
15
uri.split('/')[-1] 

或者

uri.split('/').last 
于 2012-09-10T05:10:28.540 回答
5

虽然此处答案中建议的所有用法split都是合法的,但我认为@matsko 的答案是具有更清晰代码的答案:

last = File.basename(url)
于 2018-03-25T20:16:57.817 回答
4

试试这些:

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

或者

last = File.basename(url)
于 2012-09-10T05:11:27.700 回答
2

从终端命令行:

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

于 2015-05-27T08:33:53.250 回答
0

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

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

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

上面的命令返回一个数组

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

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

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

于 2019-05-02T20:20:43.060 回答