如何使用ruby在url中添加文件扩展名

时间:2013-12-06 11:29:58

标签: ruby-on-rails ruby regex

此网址:

url = rtmp://xxxxxxxxxxxxxx.cloudfront.net/cfx/st/mp3:audios/lesson/2/cancion?Expires=1386332537&Signature=mysignature__&Key-Pair-Id=my-key-par-id

我想将扩展名mp3添加到所有文件名。

在这种情况下,文件名为cancion

课程的ID是动态值。

我想得到这样的网址:

url = rtmp://xxxxxxxxxxxxxx.cloudfront.net/cfx/st/mp3:audios/lesson/2/cancion.mp3?Expires=1386332537&Signature=mysignature__&Key-Pair-Id=my-key-par-id

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以解析URI,编辑路径,然后返回值

require 'uri/http'

u = URI.parse('rtmp://xxxxxxxxxxxxxx.cloudfront.net/cfx/st/mp3:audios/lesson/2/cancion?Expires=1386332537&Signature=mysignature__&Key-Pair-Id=my-key-par-id')
u.path += ".mp3"
puts u.to_s

或使用简单的正则表达式替换

u = 'rtmp://xxxxxxxxxxxxxx.cloudfront.net/cfx/st/mp3:audios/lesson/2/cancion?Expires=1386332537&Signature=mysignature__&Key-Pair-Id=my-key-par-id'
u.gsub('?', '.mp3?')

只有当您可以假设输入的格式始终相同时,才能使用第二种方法。

答案 1 :(得分:1)

您可以执行简单的gsub,因为这是一个网址,您可以预期会出现?这么简单的事情。

url.gsub!('?', '.mp3?')

通常我会在这里使用正则表达式,但不需要从之前说明的原因。