我在使用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"
我怎樣才能得到正確的網址嗎?
我在使用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"
我怎樣才能得到正確的網址嗎?
我解決了:
"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/) do |m|
(m =~ URI::regexp).nil?.to_s)
end
這是對你的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」。
你將不得不擴大你的問題來解釋你想要達到的目標。
很高興你解決了這個問題,但現在還不能完全清楚你試圖做:) – mikej 2010-01-25 08:58:14