如何从网址获取文件扩展名?

时间:2010-11-06 15:01:15

标签: ruby

ruby​​的新手,我如何从以下网址获取文件扩展名:

http://www.example.com/asdf123.gif

另外,我将如何格式化这个字符串,在c#中我会这样做:

string.format("http://www.example.com/{0}.{1}", filename, extension);

5 个答案:

答案 0 :(得分:66)

使用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]

答案 1 :(得分:26)

这适用于带有查询字符串

的文件
file = 'http://recyclewearfashion.com/stylesheets/page_css/page_css_4f308c6b1c83bb62e600001d.css?1343074150'
File.extname(URI.parse(file).path) # => '.css'
如果文件没有扩展名

也会返回“”

答案 2 :(得分:6)

url = 'http://www.example.com/asdf123.gif'
extension = url.split('.').last

将为您提供URL的扩展名(以最简单的方式)。现在,对于输出格式:

printf "http://www.example.com/%s.%s", filename, extension

答案 3 :(得分:2)

你可以像这样使用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+-]+)$/)

答案 4 :(得分:1)

我意识到这是一个古老的问题,但这是使用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"