2010-01-23 79 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”。

你将不得不扩大你的问题来解释你想要达到的目标。