StringTemplate 3:如何过滤列表?

时间:2012-11-13 18:16:00

标签: stringtemplate

如何使用地图从列表中删除特定元素(=多值属性)?例如,假设我想过滤掉给定列表中的所有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

1 个答案:

答案 0 :(得分:0)

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

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