2016-05-06 2 views

Antwort

5

Sie können eine Regexp verwenden.

irb(main):001:0> url = "http://localhost:3000/admin/admin_login" 
=> "http://localhost:3000/admin/admin_login" 
irb(main):002:0> url =~ /admin\/admin_login\z/ 
=> 22 
irb(main):003:0> url =~ /foo\/something_else\z/ 
=> nil 
irb(main):004:0> "http://localhost:3000/admin/admin_login/bar" =~ /admin\/admin_login\z/ 
=> nil 
+1

Ich versuche Leute zu ermutigen, 'x.match (y)' anstelle von 'x = ~ y' zu verwenden, da ersteres klarer ist. Es ist auch erwähnenswert, dass '\ z' aus Gründen [in dieser Antwort erklärt] ($ stackoverflow.com/questions/577653/difference-between-az-and-in-ruby-regular-expressions) vorzuziehen ist). – tadman

+0

Danke für den Vorschlag, '\ z' zu verwenden! Ich habe die Antwort entsprechend aktualisiert. Wie für 'x = ~ y' vs. 'x.match (y)', kann ich nicht sagen, dass ich einen klarer finde als den anderen, also behalte ich es so wie es ist. – nwk

5

können Sie String#include? verwenden:

url = "http://localhost:3000/admin/admin_login" 
url.include?("/admin/admin_login") 
=> true 

Andere Art und Weise ist String#end_with? verwenden:

url.end_with?("/admin/admin_login") 
=> true 

Dies funktioniert, wenn Sie überprüfen möchten, ob URL mit diesem Argument endet.

+0

Beachten Sie, dass dies nicht als Platzhalter funktioniert '*/admin/admin_login' würde:' "http: //localhost:3000/admin/admin_login/foo".include? ("/ admin/admin_login") 'gibt dir' true'. – nwk

0

Sie können Include verwenden? oder []

value = "http: // localhost: 3000/admin/admin_login"

value["/admin/admin_login"] 
=> "/admin/admin_login" 
value["/admin/admin_login1"] 
=> nil 
value[/\/admin\/admin_login/] 
=> "/admin/admin_login" 
value.include?("/admin/admin_login") 
=> true 
+0

Wenn ein Wert null ist .include? wird einen Fehler auslösen. Wie kann ich Value Return Saiten kennen und ich kann mit .include überprüfen? Methode... –