ruby的新手,我如何从以下网址获取文件扩展名:
http://www.example.com/asdf123.gif
另外,我将如何格式化这个字符串,在c#中我会这样做:
string.format("http://www.example.com/{0}.{1}", filename, extension);
答案 0 :(得分:66)
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"