/ / Ändern Sie eine Zeichenfolge basierend auf einem Hash-Ruby

Ändern Sie eine Zeichenfolge basierend auf einem Hash - Ruby

Ich möchte einen String konvertieren, der auf einem Hash basiert. Zum Beispiel die Zeichenfolge "assistant director" wird in konvertiert "asst dir" Wenn der Hash enthält "assistant"=>"asst" und "director"=>"dir". Ich möchte etwas tun wie:

hash = Hash["executive"=>"exec","assistant"=>"asst","associate"=>"assoc","director"=>"dir"]
str = "assistant director"

hash.each { |k, v| str.gsub!(k, v) }
# => "asst dir"

Beyogen auf dieser Beitrag,

hash.each { |k, v| str.gsub!(k, v) }

sollte die Antwort sein. Die konvertierte Zeichenfolge wird jedoch nicht zurückgegeben str sich umziehen.

Antworten:

4 für die Antwort № 1

Eine andere Möglichkeit, dies zu tun, ist:

str.gsub!(/w+/, hash)

String#gsub!

Wenn das zweite Argument ein Hash ist und der übereinstimmende Text einer seiner Schlüssel ist, ist der entsprechende Wert die Ersetzungszeichenfolge.


2 für die Antwort № 2

hash.each { |k, v| str.gsub!(k, v) } wird zurückkehren hash.to_a, aber es spielt keine Rolle, wie Sie es verwenden gsub! was bedeutet, dass dein str wird an Ort und Stelle geändert. Einfach machen:

hash.each { |k, v| str.gsub!(k, v) }
str     #=> "asst dir"