2010-01-23 112 views
1

我在使用gsub方法獲取它們之後嘗試檢查網址時遇到了一些問題。來自gsub的網址不正確

從控制檯正常工作:

('http://ale.it' =~ URI::regexp).nil?.to_s 
=> "false" 

,但如果我推出這個它不工作:

"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/, ('\0' =~ URI::regexp).nil?.to_s) 
=> "true" 

我怎樣才能得到正確的網址嗎?

回答

0

我解決了:

"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/) do |m| 
(m =~ URI::regexp).nil?.to_s) 
end 
+0

很高興你解決了這個問題,但現在還不能完全清楚你試圖做:) – mikej 2010-01-25 08:58:14

3

這是對你的2個例子做什麼的解釋。雖然這不是一個真正的答案,但它適合評論的時間有點長。

=~返回匹配發生的位置或nil如果未找到匹配項。

在您的第一個例子「http://ale.it」匹配URI::regexp起始於位置0這樣就可以獲得0.nil?這是假的,轉換爲字符串在第二個例子「假」

gsub需要兩個參數,一個圖案和替換字符串並用替換替換模式的所有匹配。

'\ 0'不匹配URI::regexp因此('\0' =~ URI::regexp).nil?爲真,to_s應用爲字符串「true」。

http://ale.it」匹配/http[s]?:\/\/[^\s]+/因此被替換爲「true」。

你將不得不擴大你的問題來解釋你想要達到的目標。