Новый для ruby, как бы получить расширение файла из URL-адреса, например:
http://www.example.com/asdf123.gif
Также, как бы я отформатировал эту строку, в С# я бы сделал:
string.format("http://www.example.com/{0}.{1}", filename, extension);
Новый для ruby, как бы получить расширение файла из URL-адреса, например:
http://www.example.com/asdf123.gif
Также, как бы я отформатировал эту строку, в С# я бы сделал:
string.format("http://www.example.com/{0}.{1}", filename, extension);
Используйте File.extname
File.extname("test.rb") #=> ".rb"
File.extname("a/b/d/test.rb") #=> ".rb"
File.extname("test") #=> ""
File.extname(".profile") #=> ""
Чтобы форматировать строку
"http://www.example.com/%s.%s" % [filename, extension]
Это работает для файлов с строкой запроса
file = 'http://recyclewearfashion.com/stylesheets/page_css/page_css_4f308c6b1c83bb62e600001d.css?1343074150'
File.extname(URI.parse(file).path) # => '.css'
также возвращает "", если файл не имеет расширения
url = 'http://www.example.com/asdf123.gif'
extension = url.split('.').last
Вы получите расширение для URL-адреса (самым простым способом). Теперь для форматирования вывода:
printf "http://www.example.com/%s.%s", filename, extension
Вы можете использовать Ruby URI class, чтобы получить фрагмент URI (то есть относительный путь к файлу) и разбить его на последнее вхождение точки (это также будет работать, если URL-адрес содержит часть запроса):
require 'uri'
your_url = 'http://www.example.com/asdf123.gif'
fragment = URI.split(your_url)[5]
extension = fragment.match(/\.([\w+-]+)$/)
Я понимаю, что это древний вопрос, но здесь еще одно голосование за использование Addressable. Вы можете использовать метод .extname
, который работает по желанию даже с строкой запроса:
Addressable::URI.parse('http://www.example.com/asdf123.gif').extname # => ".gif"
Addressable::URI.parse('http://www.example.com/asdf123.gif?foo').extname # => ".gif"