Erlang根据保留空子列表的值将列表拆分为子列表?

时间:2014-05-19 14:11:43

标签: list erlang delimiter delimited-text

有没有办法像这样获取Erlang列表:

Values = "Some||pipe|delimited|values"

并将其转换为子列表列表,保留空的子列表?结果列表如下所示:

["Some", [], "pipe", "delimited", "values"]

(在控制台空列表中打印为[]而不是"")。我尝试使用string:tokens,但它没有保留空的子列表:

string:tokens("Some||pipe|delimited|values", "|"). 
%> ["Some","pipe","delimited","values"]

有一种简单的方法吗?也许这可以通过列表推导来实现?我对Erlang相对较新,所以非常感谢任何建议。

1 个答案:

答案 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"]