Как вы вставляете двойные кавычки в строку Elixir?
У меня есть жало, вложенное ":
tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">
как я могу представить такую строку как значение в Elixir?
например:
iex> s= "tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">"
Использование ~ s и ~ S не помогло
iex(20)> s=~S("tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">")
** (SyntaxError) iex:20: keyword argument must be followed by space after: w:
iex(20)> s=~s("tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">")
** (SyntaxError) iex:20: keyword argument must be followed by space after: w:
iex(20)>
Ответы
Ответ 1
Вы можете избежать двойных кавычек:
s ="tx <iq id=\"wUcdTMYuYoo41\" to=\"[email protected]\" type=\"set\" xmlns=\"w:profile:picture\">"
Существует sigil_s, чтобы сделать это более удобным (также есть sigil_S, который не интерполирует переменные):
s = ~s(tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">)
Котировки также экранируются при использовании многострочных строк (heredocs):
"""
tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">
"""
Ответ 2
Сигилы ~s
или ~s
- это путь, вам просто нужно место после вашего знака равенства:
iex(1)> s = ~s("tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">")
"\"tx <iq id=\"wUcdTMYuYoo41\" to=\"[email protected]\" type=\"set\" xmlns=\"w:profile:picture\">\""
iex(2)> s = ~S("tx <iq id="wUcdTMYuYoo41" to="[email protected]" type="set" xmlns="w:profile:picture">")
"\"tx <iq id=\"wUcdTMYuYoo41\" to=\"[email protected]\" type=\"set\" xmlns=\"w:profile:picture\">\""