我在字符上拆分字符串,并希望修剪生成的拆分中的所有项目。我希望以下内容可以作为String.trim/1
存在:
iex> "My delimited ! string of doom" |> String.split("!") |> Enum.map(String.trim)
** (UndefinedFunctionError) function String.trim/0 is undefined or private. Did you mean one of:
* trim/1
* trim/2
(elixir) String.trim()
我收到UndefinedFunctionError
,表示函数String.trim/0
不存在。我希望通过传递给Enum.map
的匿名函数轻松完成:
iex> "My delimited ! string of doom" |> String.split("!") |> Enum.map(fn (word) -> String.trim(word) end)
["My delimited", "string of doom"]
Enum.map/2
是否需要匿名函数作为第二个参数?是否可以将我想要的功能作为参数?
答案 0 :(得分:7)
您需要使用& operator
。
Capture operator
试试这个:
iex()> "my delimited ! string of doom" |> String.split("!") |> Enum.map(&String.trim/1)
["my delimited", "string of doom"]
答案 1 :(得分:3)
虽然@ theanh-le的答案肯定是正确的并完全回答了你的问题,但你根本不需要String#trim/1
。 String#split/3
接受正则表达式:
iex(1)> "delimited ! string of doom" |> String.split(~r{\s*!\s*})
["delimited", "string of doom"]