2012-03-30 10 views
1

Ich möchte so etwas wie das tun folgendes:Rubin: Suche nach einem String für mehrere Suchbegriffe

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

Ich versuchte regex aber es hat nicht funktioniert (nicht Regex Zeichenfolge konvertieren) und I Die Anweisung muss true zurückgeben, wenn die Zeichenfolgen, nach denen wir suchen, irgendwo in params [: entry] angezeigt werden.

Was ist der beste Weg, dies mit Ruby/Rails zu tun?

Antwort

-1

Versuchen Sie es in ein Array drehen wie folgt:

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

Dies funktioniert nicht, weil es nur perfekte Übereinstimmungen findet. Um zu klären, ob 'params [: entry]' '' hello.com' 'ist, würde deins false zurückgeben, wo wir tatsächlich' true 'wollen. – sscirrus

2

Zusätzlich zu der Antwort der Wukerplank wahrscheinlich wollen Sie diese Zeichenfolgen in jedem Fall übereinstimmen (unten/oben), können Sie tun dies ein wenig den regulären Ausdruck auf diese Weise zu ändern:

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

Und natürlich können Sie den =~ Operator statt Anruf Match auf dem String, wenn Sie verwenden bevorzugen:

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

Das war hilfreich - danke Aldo. +1 – sscirrus

+0

Gern geschehen;) –

Verwandte Themen