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