如何在erlang中拆分二进制文件 [英] How can i split a binary in erlang
本文介绍了如何在erlang中拆分二进制文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想,我想要的比较简单:
What I want is, I think, relatively simple:
> Bin = <<"Hello.world.howdy?">>.
> split(Bin, ".").
[<<"Hello">>, <<"world">>, <<"howdy?">>]
任何指针?
推荐答案
目前没有与 lists:split/2
等效的 OTP 函数适用于二进制字符串.在 EEP-9 公开之前,您可以编写一个二进制拆分函数,例如:
There is no current OTP function that is the equivalent of lists:split/2
that works on a binary string. Until EEP-9 is made public, you might write a binary split function like:
split(Binary, Chars) ->
split(Binary, Chars, 0, 0, []).
split(Bin, Chars, Idx, LastSplit, Acc)
when is_integer(Idx), is_integer(LastSplit) ->
Len = (Idx - LastSplit),
case Bin of
<<_:LastSplit/binary,
This:Len/binary,
Char,
_/binary>> ->
case lists:member(Char, Chars) of
false ->
split(Bin, Chars, Idx+1, LastSplit, Acc);
true ->
split(Bin, Chars, Idx+1, Idx+1, [This | Acc])
end;
<<_:LastSplit/binary,
This:Len/binary>> ->
lists:reverse([This | Acc]);
_ ->
lists:reverse(Acc)
end.
这篇关于如何在erlang中拆分二进制文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文