是否可以转义单词列表印记中的空格?

nic*_*oga 1 elixir

我正在尝试创建一个包含阿根廷所有省份的原子列表。由于其中一些由多个单词组成,我需要转义空格。

\n\n
~w[\n  Buenos\\sAires\n  Capital\\sfederal Catamarca Chaco Chubut Corrientes C\xc3\xb3rdoba\n  Entre\\sR\xc3\xados Formosa Jujuy La\\sPampa La\\sRioja Mendoza Misiones Neuqu\xc3\xa9n\n  R\xc3\xado\\sNegro Salta San\\sJuan San\\ Luis Santa\\sCruz Santa\\sFe\n  Santiago\\sdel\\sEstero Tierra\\sdel\\sFuego Tucum\xc3\xa1n\n]a\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试过使用sigil_wandsigil_W与经典转义序列\\and \\s,但它不起作用。

\n\n
\n

(26 个省份 - 1) * (2 个引号 (") + 1 个逗号 (,) + 1 个可读空格 (" ")) - 我将与印记形式一起使用的 25 个空格 = 我可以保存的 75 个字符

\n
\n\n

我知道我可以使用自定义标志来实现这一点:

\n\n
defmodule MySigil do\n  def sigil_X(string, [])  do\n   string\n   |> String.split(~r/\\s/)\n   |> Enum.map(&String.replace(&1, "\\\\s", " "))\n  end\nend\n\nimport MySigil\n~X[Buenos\\sAires La\\sPlata]\n["Buenos Aires", "La Plata"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

...但是有没有更少的“自制”方法呢?

\n

Dog*_*ert 5

不,这是不可能的。sigil_w两者sigil_W都调用模块中的私有split_wordsKernel方法,该方法用于String.split分割字符串,该字符串始终会在任何空白处分割。