如何在Mustache中跳过空字符串?无需修改后端输入
问题描述
我想要实现如下文本效果:
- 当Romeo包含内容时:
- Alpha
- Romeo
- //空行
- //空行
- Julia
- 当Romeo为Null或空字符串时:
- Alpha
- Julia
我的.mustache模板如下:
{{alpha}} {{#romeo}}{{romeo}}\n\n{{/romeo}} {{julia}}
当前模板在Romeo为Null时有效,但在Romeo为空字符串时无效。能否在不修改如下所示的后端输入逻辑的前提下解决该问题?
if(romeo.isEmpty()){ romeo=null;
解决方案
可以通过调整Mustache模板的嵌套区块逻辑来解决,不需要修改后端代码。
Mustache会把空字符串判定为真值,因此空字符串时{{#romeo}}区块仍会执行,这就是当前模板失效的原因。我们需要添加一层嵌套判断,确保只有当Romeo是非空字符串时才输出内容和空行。
修改后的模板:
{{alpha}} {{#romeo}}{{#romeo}}{{romeo}} {{/romeo}}{{/romeo}} {{julia}}
逻辑解释:
- 外层
{{#romeo}}:仅当Romeo不为null时触发(包含空字符串的情况); - 内层
{{#romeo}}:仅当Romeo是有实际内容的非空字符串时触发(空字符串会被Mustache判定为假值,跳过此区块); - 当Romeo有内容时,内层区块输出
{{romeo}}和两个换行,对应需求中的两个空行; - 当Romeo是空字符串或null时,最终只会输出Alpha和Julia,符合预期效果。
内容的提问来源于stack exchange,提问作者Tristate
相关产品推荐
相关产品推荐

