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

Bla*_*man 34 ruby

ruby的新手,如何从URL中获取文件扩展名,如:

http://www.example.com/asdf123.gif
Run Code Online (Sandbox Code Playgroud)

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

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

Sim*_*tti 66

使用File.extname

File.extname("test.rb")         #=> ".rb"
File.extname("a/b/d/test.rb")   #=> ".rb"
File.extname("test")            #=> ""
File.extname(".profile")        #=> ""
Run Code Online (Sandbox Code Playgroud)

格式化字符串

"http://www.example.com/%s.%s" % [filename, extension]
Run Code Online (Sandbox Code Playgroud)

  • 似乎`File.extname`不会剥离查询字符串.所以如果你的网址是`http://www.example.com/download.mp3?hello = world`那么它将返回`.mp3?hello = world`.请记住一些事情. (6认同)
  • 如果没有查询字符串,这很有效。如果可能的话,我推荐奥兰多的答案。 (2认同)

Orl*_*ndo 26

这适用于带有查询字符串的文件

file = 'http://recyclewearfashion.com/stylesheets/page_css/page_css_4f308c6b1c83bb62e600001d.css?1343074150'
File.extname(URI.parse(file).path) # => '.css'
Run Code Online (Sandbox Code Playgroud)

如果文件没有扩展名,也返回""

  • @Itzik984 这些不是有效的 URI,您应该在使用此代码之前清理您的输入。 (2认同)

Raf*_*ler 6

url = 'http://www.example.com/asdf123.gif'
extension = url.split('.').last
Run Code Online (Sandbox Code Playgroud)

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

printf "http://www.example.com/%s.%s", filename, extension
Run Code Online (Sandbox Code Playgroud)

  • 还有更精美的`url.split('。')。last`和`“ http://www.example.com/%s.%s”%[文件名,扩展名]`。 (2认同)