2011-10-19 16 views
0

在Ruby中,我想要替換HTML字符串中的給定URL。
這裏是我的失敗嘗試:Ruby:替換HTML字符串中的給定URL

escaped_url = url.gsub(/\//,"\/").gsub(/\./,"\.").gsub(/\?/,"\?") 
path_regexp = Regexp.new(escaped_url) 
html.gsub!(path_regexp, new_url) 

注:url其實是我寫的一個谷歌圖的請求的URL,這將不會有更多的特殊字符比/?|.=%:

+0

首先這裏有一個提示:gsub返回替換文本,gsub!改變你的變量並返回零 – pguardiario

+0

謝謝!更正 –

回答

2

gsub方法可以接受字符串或正則表達式作爲第一個參數,這同樣適用於gsub!。例如:

>> 'here is some ..text.. xxtextxx'.gsub('..text..', 'pancakes') 
=> "here is some pancakes xxtextxx" 

所以你不需要用正則表達式或逃避所有打擾,只是做一個直的字符串替換:

html.gsub!(url, new_url) 

或者更好,使用HTML解析器找到您正在查找的特定節點並執行簡單的屬性分配。

2

我認爲你正在尋找的東西像:

path_regexp = Regexp.new(Regexp.escape(url)) 
+0

太棒了!這救了我:-) –