2014-09-10 12 views
6

Ich verwende die grep-Methode, um nach Mustervergleich zu filtern. Dies ist ein Beispielcode.Ruby-Variable innerhalb von Regex-Code

Ruby erlaubt mir jedoch nicht, den area_code mit dem Block in der Schienenansicht einzugeben. Stattdessen bin ich gezwungen, es hart wie folgt zu kodieren:

companies.grep /miami/ 

Denken Sie daran, Stadt ist eine Variable. Zum Beispiel

city = miami 

Allerdings aktualisiert es. Weißt du, wer ich eine Variable an die Grep-Methode übergeben kann?

Auch ich versuchte companies.grep/# {city} /, aber es hat nicht funktioniert

Antwort

18
companies.grep /#{city}/ 
# or 
companies.grep Regexp.new(city) 

Bei einfachen alphanumerischen Abfrage, dies sollte ausreichen; aber es ist besser, in die Praxis zu gehen, denen zu entkommen, wenn Sie keine Regexp-Operatoren haben wollen. Also, bessere Version:

companies.grep /#{Regexp.escape city}/ 
# or 
companies.grep Regexp.new(Regexp.escape city) 
+0

Regexp.new (Stadt) hat den Trick gemacht. Danke – user3465296

+0

Diese beiden sind gleichwertig. Es gibt keine Chance für '/ # {city} /' zu scheitern und 'Regexp.new (city)' erfolgreich zu sein, wenn die gleiche 'city' gegeben ist (es sei denn, jemand hat 'Regexp' definiert und mit dir vermischt). – Amadan

+0

Allerdings war es in der Schienenansicht während Regexp.new (Stadt) gelungen – user3465296

Verwandte Themen