我正在尝试拆分此列表
List = [[<<"5">>, <<"54">>], [<<"00">>], [<<"35">>, <<"54">>, <<"45">>, <<"55">>], [<<"00">>],[ <<"5">>]]
进入
List = [[<<"5">>, <<"54">>], [<<"35">>, <<"54">>, <<"45">>, <<"55">>], [<<"5">>]]
基本上基于<<“00”>>
解决这个问题最好的 BIF 是什么,我有一些代码,但它很草率,我正在努力学习。
谢谢
编辑:
尝试了以下方法,不起作用
完成2 = 列表:splitwith( [<<"00">>], 完成1),
编辑: 这条线有效!
7> lists:splitwith(fun(A) -> A == [<<"00">>] end, List).
{[],
[[<<"5">>,<<"54">>],
[<<"00">>],
[<<"35">>,<<"54">>,<<"45">>,<<"55">>],
[<<"00">>],
[<<"5">>]]}
但是我需要一些更复杂的东西:比如当 delim 是 [<<"00">>,<<"23">>]
9> List = [[<<"5">>,<<"54">>], [<<"00">>,<<"23">>], [<<"35">>,<<"54">>], [<<"5">
>], [<<"00">>, <<"23">>]].
[[<<"5">>,<<"54">>],
[<<"00">>,<<"23">>],
[<<"35">>,<<"54">>],
[<<"5">>],
[<<"00">>,<<"23">>]]
10> lists:splitwith(fun(A) -> A == [<<"00">>] end, List).
{[],
[[<<"5">>,<<"54">>],
[<<"00">>,<<"23">>],
[<<"35">>,<<"54">>],
[<<"5">>],
[<<"00">>,<<"23">>]]}
11> lists:splitwith(fun(A) -> A == [<<"00">>,<<"23">>] end, List).
{[],
[[<<"5">>,<<"54">>],
[<<"00">>,<<"23">>],
[<<"35">>,<<"54">>],
[<<"5">>],
[<<"00">>,<<"23">>]]}
12>
运气不好
最佳答案
我不确定我是否正确理解了您的要求。这是一个可能的解决方案。它将按任何分隔符拆分列表,例如 [<<"00">> | _]。
1> List = [[<<"5">>, <<"54">>], [<<"00">>], [<<"35">>, <<"54">>, <<"45">>, <<"55">>], [<<"00">>, <<"23">> ],[ <<"5">>]].
[[<<"5">>,<<"54">>],
[<<"00">>],
[<<"35">>,<<"54">>,<<"45">>,<<"55">>],
[<<"00">>,<<"23">>],
[<<"5">>]]
2> List2 = [ X || X <- List, case X of [ <<"00">> | _ ] -> false; _ -> true end].
[[<<"5">>,<<"54">>],
[<<"35">>,<<"54">>,<<"45">>,<<"55">>],
[<<"5">>]]
关于Erlang - 根据值将列表拆分为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491065/