DimWell
How to make String with Placeholders?
Hi Experts,
I am looking for built in function something like String builder with Placeholders.
Iet say in C like languages usuall you wold have function that looks like:
print(" Some string %placeholder1, string continues…%placeholder2 ", var1, var2)
#vars goes to placeholders
`Do we have something similar in Elixir ?
Use Case:
User provides: custom url with placeholders and separately details.
Then later url should be combined with data into proper url.
User: 223344
Lang: eng
Type: json | xml
Original URL
http: // somesite. com/?i=#{id}&lang=#{language}&type=api&api_v=1&api_type=#{data_type}"
Updated URL
https: // somesite. com/?i=#223344&lang=#eng&type=api&api_v=1&api_type=#json"
Marked As Solved
cpgo
Maybe not the simplest option but also works
iex(1)> template = "http://somesite.com/?i=#<%=id%>&lang=#<%=language%>&type=api&api_v=1&api_type=#<%=data_type%>"
"http://somesite.com/?i=#<%=id%>&lang=#<%=language%>&type=api&api_v=1&api_type=#<%=data_type%>"
iex(2)> EEx.eval_string(template, [id: 1, language: "pt-BR", data_type: "json"])
"http://somesite.com/?i=#1&lang=#pt-BR&type=api&api_v=1&api_type=#json"
Also Liked
michalmuskala
Format is rather experimental right now and has some issues especially around formatting floats. Maybe I should finally get into it an finish it, now that Jason is mostly done ![]()
jfeng
One way is with Michał Muskała’s Format library GitHub - michalmuskala/format: A simple string formatter for Elixir · GitHub. I’m not sure if there’s any documentation, but you can do:
def print_url(id, language, url) do
url
|> Format.compile()
|> Format.string(id: id, language: language)
|> IO.puts()
end
where url is a string that contains {id} and {language}, which get replaced by the corresponding values specified in Format.string.
My personal syntactic preference would be
...
|> Format.string([id: id, language: language])
...
mguimas
I suggest you to use :io_lib.format(format, [arg1, ...]) |> to_string(). See the documentation of :io_lib.format.
It is one less dependency if you use this function because it is in the standard library.
Last Post!
trollfred
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









