

以下の様なことをしたいです（`some_method`に入るメソッドを知りたい）。

[code]

    some_method "aa/:foo/:bar/bb", {foo:1, bar:2}
    > aa/1/2/bb
    
[/code]

* * *

以下原文  
Title: How to format string by hash variable on ruby?

I wan't to do it.

[code]

    some_method "aa/:foo/:bar/bb", {foo:1, bar:2}
    > aa/1/2/bb
    
[/code]


CC BY-SA 3.0
2016-09-29T09:10:49.720
29241
2016-10-06T12:48:36.653
2016-10-01T04:27:26.273
3974
18974
question
ruby
Rubyに於いて連想配列で文字列をフォーマットする方法


雑に。

[code]

    require 'mustermann'
    
    def some_method(fmt, h)
      Mustermann.new(fmt).expand(h)
    end
    
[/code]


CC BY-SA 3.0
2016-10-02T04:03:17.447
29297
2016-10-02T04:03:17.447
4010
29241
answer


ハッシュを使いたいのが主で、フォーマット指定の形式は何でもよいのなら、

[code]

    'aa/%<foo>s/%<bar>s/bb' % {foo:1, bar: 2}
    
[/code]

または

[code]

    sprintf 'aa/%<foo>s/%<bar>s/bb', foo: 1, bar: 2
    
[/code]

でよいかな。 Rubyの printf 書式仕様の一部ゆえ、数値の桁数とかも printf 同様に指定できます。


CC BY-SA 3.0
2016-10-03T05:29:46.163
29314
2016-10-03T05:29:46.163
17037
29241
answer

[code]

    'aa/:foo/:bar/bb'.gsub(/:(\w+)/) { {foo:1, bar:2}.fetch($~[1].to_sym) }
    
[/code]


CC BY-SA 3.0
2016-10-06T12:48:36.653
29393
2016-10-06T12:48:36.653
2599
29241
answer