I haven’t benchmarked, but you could do something with a for comprehension
iex(103)> map = %{
...(103)> int_a: "1",
...(103)> int_b: "not_a_int!",
...(103)> other: "leave me alone"
...(103)> }
%{int_a: "1", int_b: "not_a_int!", other: "leave me alone"}
iex(104)> for {k, v} <- map, match?("int" <> _, Atom.to_string(k)), into: map do
...(104)> case Integer.parse(v) do
...(104)> {int, _} -> {k, int}
...(104)> _other -> {k, nil}
...(104)> end
...(104)> end
%{int_a: 1, int_b: nil, other: "leave me alone"}






















