<div dir="ltr">yeah, already wrote something like this<div><br></div><div><div>format(String, Parameters) -></div><div><span class="" style="white-space:pre">   </span>Parts = re:split(String, "~(.*?)\\((.*?)\\)(.)", [{return, binary}, group, trim]),</div><div><span class="" style="white-space:pre">       </span>Replace = fun</div><div><span class="" style="white-space:pre">              </span>([Bin]) -> Bin;</div><div><span class="" style="white-space:pre">         </span>([Prefix, Modifier, Name, F]) -></div><div><span class="" style="white-space:pre">                        </span>case lists:keyfind(Name, 1, Parameters) of</div><div><span class="" style="white-space:pre">                         </span>false -> exit([<<"String format: parameter ">>, Name, <<" not found.">>]);</div><div><span class="" style="white-space:pre">                          </span>{_, Val} -></div><div><span class="" style="white-space:pre">                                     </span>[Prefix, io_lib:format(<<"~", Modifier/binary, F/binary>>, [Val])]</div><div><span class="" style="white-space:pre">                   </span>end</div><div><span class="" style="white-space:pre">        </span>end,</div><div><span class="" style="white-space:pre">       </span>[Replace(Part) || Part <- Parts].</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div>>iolist_to_binary(format("start~(foo)Bmiddle~10(bar)send", [{<<"foo">>, 123}, {<<"bar">>, <<"qwerty">>}])).</div><div><<"start123middle    qwertyend">></div></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-15 22:44 GMT+03:00 Imants Cekusins <span dir="ltr"><<a href="mailto:imantc@gmail.com" target="_blank">imantc@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">io_lib:format <br>
substitutes multiple placeholders, converts to string, does padding.</p>
<p dir="ltr">You could <br>
1) search for named placeholders using re:run</p>
<p dir="ltr">2) replace placeholders with ~s or ~p using re:replace </p>
<p dir="ltr">3) prepare a list with substitutes from a map|dict<br>
 <br>
4) pass this list to io_lib:format.</p>
<p dir="ltr">A bit of work but doable.</p>
</blockquote></div><br></div>