erlang - 我如何在 erlang 中拆分二进制文件

标签 erlang binary

我想要的是,我认为,相对简单:

> Bin = <<"Hello.world.howdy?">>.
> split(Bin, ".").
[<<"Hello">>, <<"world">>, <<"howdy?">>]

任何指针?

最佳答案

当前没有等效于 lists:split/2 的 OTP 功能适用于二进制字符串。直到 EEP-9是公开的,您可以编写一个二进制拆分函数,例如:

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 - 我如何在 erlang 中拆分二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/428124/

相关文章:

actionscript-3 - 与 Erlang 服务器的 Flash 通信

erlang - 我应该在 Erlang 中使用 try catch 还是应该传回错误 token ?

file - 如何比较二进制文件是否相同?

perl - 如何使用 Perl 脚本将二进制数转换为字符串字符?

python - 是否有更 pythonic 的方法将 bool 值列表转换为整数?

erlang - wxErlang 无法加载驱动程序

erlang - 你如何使用 rebar 设置 Erlang NIF 项目?

erlang - 使用 Tsung 在 eJabberd 中模拟在线用户

迭代整数位的 Pythonic 方法

Excel VBA 位控制