检查字符串变量是否为空或空白,或者是否只包含空格

49
我该如何在Twig中检查字符串变量是否为null、空或只包含空格字符?(可能是最短的方式,类似于CSharp的String.IsNullOrWhiteSpace()方法)

对不起,我将问题恢复为原始陈述,因为答案是基于它被选择的。在我不太清醒的时刻,我进行了修改,让它看起来像一个非常相似但不完全相同的问题。 - Guillermo Gutiérrez
4个回答

74

3
我不是“细枝末节”的专家,但是应该是“{% if foo is not null **and**foo is not empty %}”才对吧?否则看起来似乎会一直为真。 - DarkWanderer
1
@SirDerpington,'foo is (not) null' 部分是否仍然必要?Twig文档指出,'empty' 也会检查值是否等于 null - sschwei1
1
@sschwei1,这是一个很好的发现。根据文档,这确实是正确的。不过我不确定在2014年时情况如何。 - SirDerpington

53

已经有很好的回答了,但我也提供我的意见:

{% if foo|length %}

我受到 @GuillermoGutiérrez 的筛选技巧的启发。

但我认为 |length 更安全,因为 "0"|trim 表达式将被计算为 false。

参考资料:


1
在我看来,这太过于简陋了。 - Marco Faustinelli
@alanTiemblo - 我会说是最受欢迎的答案。仍然是我的个人意见 :-) - Marco Faustinelli

20

我更倾向于仅使用trimempty

{% if foo|trim is empty %} 

{% if foo|trim is not empty %} 

empty在以下情况下会被评估为true:

  • null
  • false
  • 空数组
  • 空字符串

7

{% if foo|trim %} 似乎就足够了(假设要检查的变量为foo)。如果 foo 不是 null,则 trim 会删除空格。此外,if 处理空字符串或 null 作为 false,否则为 true,因此不需要更多的操作。

参考资料:


除非foo包含像数字0或字符串“0”这样的内容。 - Gogowitsch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接