> def myformat4(str, hash) > str.gsub( %r{%\((\w+)\)([dsi])?} ) { "%#{$2}" % hash[$1] } > end > Note: I didn't bother to look up all legal formatting characters. This also doesn't take care of complex formats, like "%-6.3f". Could easily be extended though, but since this requires common agreement (do we use "%fmt(var)" or "%(var)fmt" ?), I'd much rather see Nobu's RCR come into being. Also, I'm surprised no one offered the evil eval: irb(main):001:0> s = '#{name}' => "#{name}" irb(main):002:0> name = "Bob" => "Bob" irb(main):003:0> eval "\"#{s}\"" => "Bob" (Not that it deals with formats in anyway, or that I recommend using it :)