O binary
módulo fornece uma maneira fácil de dividir binários usando split/2,3
, mas e se você quiser juntar uma lista de binários novamente?
-spec binary_join([binary()], binary()) -> binary().
binary_join([], _Sep) ->
<<>>;
binary_join([Part], _Sep) ->
Part;
binary_join(List, Sep) ->
lists:foldr(fun (A, B) ->
if
bit_size(B) > 0 -> <<A/binary, Sep/binary, B/binary>>;
true -> A
end
end, <<>>, List).
Funciona exatamente como você espera:
binary_join([<<"Hello">>, <<"World">>], <<", ">>) % => <<"Hello, World">>
binary_join([<<"Hello">>], <<"...">>) % => <<"Hello">>
Espero que você ache isso útil!