我想借此链接..如何将此链接与Rails互换?
http://www.youtube.com/watch?v=4lzi_3SM9-o
,把它变成这样:
http://www.youtube.com/v/4lzi_3SM9-o
要做到这一点,我需要一些方法来捕捉watch?v=
与v/
其切换我想在我的模型中使用def tube_link
任何想法?
我想借此链接..如何将此链接与Rails互换?
http://www.youtube.com/watch?v=4lzi_3SM9-o
,把它变成这样:
http://www.youtube.com/v/4lzi_3SM9-o
要做到这一点,我需要一些方法来捕捉watch?v=
与v/
其切换我想在我的模型中使用def tube_link
任何想法?
无需正则表达式,只需使用字符串替换:
url["watch?v="] = "v/"
但予以警告,你可能会得到一个指标差,如果你的东西指数是不是的字符串中。(有关详细信息,请参阅here。)
编辑:像这样的东西可能更可读(更可靠):
newUrl = oldUrl.gsub("watch?v=", "v/")
"http://www.youtube.com/watch?v=4lzi_3SM9-o".gsub("watch?v=", "v/")
您应该替换单引号双引号。这将节省您的时间
t1 = Time.now
for i in 1..100000
"http://www.youtube.com/watch?v=4lzi_3SM9-o".gsub("watch\?v=", "v/")
end
t2 = Time.now
p t2-t1
>ruby test.rb
1.173
t1 = Time.now
for i in 1..100000
"http://www.youtube.com/watch?v=4lzi_3SM9-o".gsub('watch\?v=', 'v/')
end
t2 = Time.now
p t2-t1
>ruby test.rb
0.406
1.173比。 0.406
哇有趣。谢谢你! – Trip 2010-12-14 21:43:32
你的第一个解决方案唯一的问题是,如果'url'不包含'watch?v =',那么你很可能会得到一个错误。 ('IndexError:字符串不匹配'在我这里,但可能取决于你的设置)。这使gsub成为更好的选择,因为如果找不到模式,gsub将不会执行任何操作。 – 2010-12-14 22:03:54
@Brett Bender:哦,非常好。我将编辑答案以反映这一点。 – 2010-12-14 22:21:34