ハッシュに基づいて文字列を変換したい。たとえば、文字列 "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)
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"