有没有办法像这样获取Erlang列表:
Values = "Some||pipe|delimited|values"
并将其转换为子列表列表,保留空的子列表?结果列表如下所示:
["Some", [], "pipe", "delimited", "values"]
(在控制台空列表中打印为[]
而不是""
)。我尝试使用string:tokens
,但它没有保留空的子列表:
string:tokens("Some||pipe|delimited|values", "|").
%> ["Some","pipe","delimited","values"]
有一种简单的方法吗?也许这可以通过列表推导来实现?我对Erlang相对较新,所以非常感谢任何建议。
答案 0 :(得分:3)
正如legoscia所说,你可以使用lists:splitwith/2
。此外,您可能需要考虑使用re
模块:
1> Values = "Some||pipe|delimited|values"
"Some||pipe|delimited|values"
2> re:split(Values, "\\|", [{return,list}]).
["Some",[],"pipe","delimited","values"]