2012-11-13 53 views
1

如何使用地圖從列表中刪除特定元素(=多值屬性)?例如,假設我想篩選出所有的B在一個給定的名單:StringTemplate 3:如何過濾列表?

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

期望的結果將是「A,C」,但實際的結果是「一個,, C,」
事情是地圖成功地將b變成了空值,但是它們被封裝在一個匿名模板中,併成爲非空值。所以它們也不會帶走strip()函數。

所以問題是,是否有可能通過稍微修改上面的代碼來使用地圖過濾列表?

更新

我已經找到了解決辦法:

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

這給了我想要的結果:A,C

回答

0

可能不希望在您的模板進行過濾,但仍然,可能是一個錯誤。

好的,我檢查出來。這使空不爲null,所以它認爲它是一個項目。 ST以相同的方式處理錯誤條件:空不爲空。我認爲你需要在模型中進行過濾。

+0

非常感謝和遲到的迴應。順便說一句,'ST處理虛假條件的句子同樣的方式:空不空'有時可能不是真的。請看看我上面更新的帖子。 –