Ответ 1
Я бы использовал правильный парсер URI, например, один из
Указанные строки URI, такие как:
http://www.somesite.com/abc
http://www.somesite.com/alpha/beta/abc
http://www.somesite.com/alpha/abc
Какой самый элегантный способ в Ruby захватить abc
в конце этих URI?
Я бы использовал правильный парсер URI, например, один из
uri.split('/')[-1]
или
uri.split('/').last
Попробуйте следующее:
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:[email protected]/foo/bar/baz/?lala=foo'
uriPathTail = File.basename(URI.parse(theURI).path) # => baz
он хорошо работает с любыми юридическими правами, которые у вас были.
Если вы не используете URI.parse(), любой параметр URL-адреса будет ошибочно принят как последний отрезок URI.
Несмотря на то, что все предложенные в ответах варианты использования split
являются законными, на мой взгляд, ответ @matsko - более понятный код
last = File.basename(url)
Если значением является любая орбитальная строка + URI, то нижеприведенное решение должно работать.
Сначала извлеките URI из строки:
uri_string = URI.extract("Test 123 http://www.somesite.com/abc")
Выше команда возвращает массив
Затем извлеките последнюю часть URI, используя
uri_string[0].split('/').last
предварительное условие: требуется добавить "uri" в скрипт ruby