文字列を置換するためのメソッドとしては、sub や gsub が用意されていますが、置換対象の文字列が決まった形(テンプレート)の場合、%
によるプレースホルダを使って置換してしまうのが楽です。
次の例では、テンプレート文字列 (template
) の中のプレースホルダ部分 (%s
) を置換しています。
template = '/Users/%s/temp'
s = template % 'maku' #=> /Users/maku/temp
複数のプレースホルダを配置することもできます。
template = '%s costs %d yen'
s = template % ['AAA', 100] #=> AAA costs 100 yen
プレースホルダ部分に名前を指定しておくと、Hash 値を渡すことができます。
下記のように名前を <>
で囲んで指定し、その後ろにフォーマット(s
や d
)を指定します。
template = '%<name>s costs %<price>d yen'
s = template % {name:'AAA', price:100} #=> AAA costs 100 yen
名前を囲む記号を {}
にすると、後ろのフォーマット指定を省略することができます。
template = '%{name} costs %{price} yen'
s = template % {name:'AAA', price:100} #=> AAA costs 100 yen