【问题标题】:Filter out empty strings in ST4过滤掉 ST4 中的空字符串
【发布时间】:2017-08-14 15:39:49
【问题描述】:

考虑以下示例:

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

这给出了结果:

foo,,bar

但我需要:

foo,bar

在 ST4 中使用分隔符格式化之前,有什么方法可以过滤掉空字符串值?

(在实际代码中,值来自另一个模板,该模板具有&lt;if&gt; 条件并为模型中不需要的数据返回空结果,我不想将条件移出该模板以保持模板被封装/隔离.)

【问题讨论】:

    标签: stringtemplate stringtemplate-4


    【解决方案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
    

    【讨论】:

    • 可能随着新版本的变化而有所改变,但现在在映射中使用 [] 是不合适的。用以下内容替换 DropEmpty 对我有用:["": false, default: key]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2017-01-21
    • 1970-01-01
    相关资源
    最近更新 更多