考虑以下示例:
<["foo", "", "bar"]; separator=",">
这给出了结果:
foo,,bar
但我需要:
foo,bar
在ST4中使用分隔符格式化之前,有没有办法过滤掉空字符串值?
(在实际代码中,值来自另一个模板,其具有<if>
条件并从模型中返回空的结果以获取不需要的数据,并且我不想将条件移出该模板以保持模板封装/隔离。)
答案 0 :(得分:1)
我找到了两种辅助方法的解决方法。但它太令人毛骨悚然了......
DropEmpty ::= ["": [], default: key]
Separated(l, s, w=false) ::= "<if (DropEmpty.(first(l)))><if (w)><s><endif><first(l)><Separated(rest(l), s, true)><else><if (rest(l))><Separated(rest(l), s, w)><endif><endif>"
MyTemplate() ::= <<
<Separated(["", "foo", "", "bar", "", "", "goo", "", ""], ",")>
>>
这给出了:
foo,bar,goo