Подтвердить что ты не робот

Лучший способ извлечь последний сегмент URI в Ruby

Указанные строки URI, такие как:

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

Какой самый элегантный способ в Ruby захватить abc в конце этих URI?

4b9b3361

Ответ 1

Я бы использовал правильный парсер URI, например, один из

Ответ 2

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

или

uri.split('/').last 

Ответ 3

Попробуйте следующее:

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

или

last = File.basename(url)

Ответ 4

В командной строке терминала:

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

из вашего источника .rb:

require 'uri'
theURI = 'http://user:[email protected]/foo/bar/baz/?lala=foo'
uriPathTail = File.basename(URI.parse(theURI).path) # => baz

он хорошо работает с любыми юридическими правами, которые у вас были.

Если вы не используете URI.parse(), любой параметр URL-адреса будет ошибочно принят как последний отрезок URI.

Ответ 5

Несмотря на то, что все предложенные в ответах варианты использования split являются законными, на мой взгляд, ответ @matsko - более понятный код

last = File.basename(url)

Ответ 6

Если значением является любая орбитальная строка + URI, то нижеприведенное решение должно работать.

Сначала извлеките URI из строки:

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

Выше команда возвращает массив

Затем извлеките последнюю часть URI, используя

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

предварительное условие: требуется добавить "uri" в скрипт ruby