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

时间:2012-09-10 05:04:47

标签: ruby string uri string-parsing

给定URI字符串,如:

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

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

6 个答案:

答案 0 :(得分:50)

我会使用正确的URI解析器(如URI module之一)来获取URI的路径。然后将其拆分为/并获取其最后一部分:

require 'uri'

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

答案 1 :(得分:13)

uri.split('/')[-1] 

uri.split('/').last 

答案 2 :(得分:4)

试试这些:

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

或者

last = File.basename(url)

答案 3 :(得分: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

它适用于你拥有的任何合法的URI。

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

答案 4 :(得分:2)

While all the usages of split suggested in the answers here are legit, in my opinion @matsko's answer is the one with the clearer code to read

last = File.basename(url)

答案 5 :(得分:0)

如果该值为任意字符串+ URI,则下面的解决方案应该有效。

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

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

以上命令返回一个数组

然后使用

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

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