/ /ハッシュに基づいて文字列を変更します-ruby

ハッシュルビーに基づいて文字列を変更する

ハッシュに基づいて文字列を変換したい。たとえば、文字列 "assistant director" に変換される "asst dir" ハッシュに含まれる場合 "assistant"=>"asst" そして "director"=>"dir"。私は次のようなことをしたい:

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

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

に基づく この郵便受け,

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

答えになるはずです。ただし、変換された文字列は返されません。また、返されません。 str 着替える。

回答:

回答№1は4

これを行う別の方法は:-

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

String#gsub!

2番目の引数がハッシュであり、一致したテキストがそのキーの1つである場合、対応する値は置換文字列です。


回答№2については2

hash.each { |k, v| str.gsub!(k, v) } 戻ります hash.to_a、しかしそれはあなたが再利用しているので問題ではありません gsub! つまり、 str その場で変更されます。単に行う:

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