Ich versuche, durch Elemente einer Struktur zu durchlaufen, suchen Sie nach Zeichenfolgen, die das Format {...}
enthalten, und ersetzen Sie sie durch eine entsprechende Zeichenfolge aus einem Hash. Dies sind die Daten Ich verwende:Verwenden von Regex zum Ersetzen von Parametern in einer Zeichenfolge
Request = Struct.new(:method, :url, :user, :password)
request = Request.new
request.user = "{user} {name}"
request.password = "{password}"
parameters = {"user" => "first", "name" => "last", "password" => "secret"}
Dies ist Versuch 1:
request.each do |value|
value.gsub!(/{(.+?)}/, parameters["\1"])
end
In diesem Versuch, parameters["\1"] == nil
.
Versuch 2:
request.each do |value|
value.scan(/{(.+?)}/) do |match|
value.gsub!(/{(.+?)}/, parameters[match[0]])
end
end
Dies führt zu request.user == "first first"
. Trying parameters[match]
Ergebnisse in nil
.
Kann mir jemand helfen, dies zu lösen?
Hallo @sawa, Ihre Antwort ist groß, aber können Sie bitte die Magie hinter 'Wert% parameters' erklären. Ich habe nicht gesehen de den% Operator, der auf diese Weise zuvor verwendet wurde. – Scotty
http://ruby-doc.org/core-2.2.0/String.html#method-i-25 – sawa