我要解析一个xml文档,从xml节点中提取一个整数.
目前我有:
try do
Floki.find(node, "stat[type='jersey_num']")
|> Floki.text
|> Integer.parse
|> elem(0)
rescue
e -> nil
end
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我不喜欢拯救一切,我想做的事情如下:
Floki.find(node, "stat[type='jersey_num']")
|> Floki.text
|> case Integer.parse do
{ int, _binary } -> int
_ -> nil
end
Run Code Online (Sandbox Code Playgroud)
但我进入unhandled operator ->第四行,有没有办法做到这一点?
Dog*_*ert 26
你需要先管道Integer.parse然后进入case:
defmodule MyInteger do
def parse(string) do
string
|> Integer.parse
|> case do
{int, _} -> int
_ -> nil
end
end
end
Run Code Online (Sandbox Code Playgroud)
演示:
iex(1)> MyInteger.parse "123"
123
iex(2)> MyInteger.parse "abc"
nil
Run Code Online (Sandbox Code Playgroud)
请注意,如果您想要MyInteger.parse "123abc" #=> 123与之{int, ""} -> int相同的行为,您可能希望将模式匹配更改为Integer.parse/1.