【问题标题】:Erlang split list into sublists based on value preserving empty sublists?Erlang根据保留空子列表的值将列表拆分为子列表?
【发布时间】:2014-07-07 13:09:00
【问题描述】:

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

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

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

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

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

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

有没有简单的方法来做到这一点?也许这可以通过列表推导实现?我对 Erlang 比较陌生,因此非常感谢任何建议。

【问题讨论】:

  • 列表推导是不可能的,因为它们是孤立地处理每个元素的。您可以编写一个递归函数,使用lists:splitwith 从列表中获取元素。

标签: list erlang delimiter csv


【解决方案1】:

正如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"]

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 2014-04-01
    • 2015-05-13
    • 1970-01-01
    • 2011-05-26
    • 2018-10-24
    • 2015-12-13
    • 2023-04-06
    相关资源
    最近更新 更多