2012-03-30 83 views
1

一个字符串,我想这样做如下:红宝石:搜索多个搜索词

if params[:entry].include? ("http" || "www" || "com" || "abc" || "def") 
    ... 
end 

我尝试使用正则表达式,但它不工作(不能转换正则表达式来串)和我如果我们正在搜索的字符串在params [:entry]中出现,则需要该语句返回true。

使用Ruby/Rails做到这一点的最佳方式是什么?

回答

-1

尝试把它变成一个数组如下:

["http","www","com","abc","def"].include?(params[:entry]) 
+1

这不起作用,因为它只找到完美匹配。澄清一下,如果'params [:entry]'是'www.hello.com',那么你会在我们真正想要的地方返回false。 – sscirrus 2012-03-30 11:04:15

2

除了Wukerplank的答案很可能要在任何情况下(低/上)匹配这些字符串,你可以做这改变了一下正则表达式是这样的:

params[:entry].match(/(http|www|com|abc|def)/i) 

当然,你可以使用=~运营商,而不是通话比赛上,如果你的字符串宁愿:

params[:entry] =~ /(http|www|com|abc|def)/i 
+0

这很有帮助 - 谢谢Aldo。 +1 – sscirrus 2012-04-02 17:37:01

+0

不客气;) – 2012-04-02 18:23:23