Лучший способ извлечь последний сегмент URI в Ruby Указанные строки URI, такие как: http://www.somesite.com/abc http://www.somesite.com/alpha/beta/abc http://www.somesite.com/alpha/abc Какой самый элегантный способ в Ruby захватить abc в конце этих URI? Ответ 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
Ответ 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