【问题标题】:StringTemplate 3: how to filter a list?StringTemplate 3:如何过滤列表?
【发布时间】:2012-11-13 18:15:59
【问题描述】:

如何使用地图从列表中删除特定元素(=多值属性)?例如,假设我想过滤掉给定列表中的所有 b:

<["a", "b", "c", "b"]: {<table.(it)>}; separator=",">
table ::= ["b":, default: key]

期望的结果是“a,c”,但实际结果是“a,,c”
问题是映射成功地将 b 转换为空值,但随后它们被包装在匿名模板 {} 中并成为非空值。所以他们也不会使用 strip() 函数。

所以问题是,是否可以通过稍微修改上面的代码来使用地图过滤列表?

更新

我找到了解决方法:

filter(it) ::= "<if(it)><it><endif>"
<["a", "b", "c", "b"]: {<table.(it)>}: filter(); separator=",">

这给出了我想要的结果:a,c

【问题讨论】:

    标签: stringtemplate


    【解决方案1】:

    可能不想在您的模板中进行过滤,但仍然可能是一个错误。

    好的,我检查过了。这给出了 empty not null 所以它认为它是一个项目。 ST 以相同的方式处理错误条件:空不为空。我认为您需要在模型中进行过滤。

    【讨论】:

    • 感谢和抱歉迟到的回复。顺便说一句,ST treats false conditionals same way: empty not null 这句话有时可能不是真的。请看我上面更新的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多