在ST4中过滤掉空字符串

时间:2017-08-14 15:39:50

标签: stringtemplate stringtemplate-4

考虑以下示例:

<["foo", "", "bar"]; separator=",">

这给出了结果:

foo,,bar

但我需要:

foo,bar

在ST4中使用分隔符格式化之前,有没有办法过滤掉空字符串值?

(在实际代码中,值来自另一个模板,其具有<if>条件并从模型中返回空的结果以获取不需要的数据,并且我不想将条件移出该模板以保持模板封装/隔离。)

1 个答案:

答案 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