我想借此鏈接..如何將此鏈接與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