为什么 Jekyll's Liquid 'contains' returns 是一个字符串?

Why Jekyll's Liquid 'contains' returns a string?

我尝试根据一个字符串是否包含另一个字符串来为变量分配 truefalse 值。我使用以下代码:

{% assign external_link = link.href contains '://' %}

对于此代码段,external_link 的值将与 link.href 的值相同(我使用命令 [=19= 检查了 external_link 的值]).

即使我在右边加上括号,我也会得到相同的结果:

{% assign external_link = (link.href contains '://') %}

有什么问题,我怎样才能得到 contains 表达式的 true/false 结果?

您可以使用 capture 过滤器标签获取 contains 标签的结果:

{% assign link = "http://example.com "%}
{% capture has_link %}{% if link contains '://' %}Yes{% else %}No{% endif %}{% endcapture%}
{{has_link}}

{% assign link = "example.com "%}
{% capture has_link %}{% if link contains '://' %}Yes{% else %}No{% endif %}{% endcapture%}
{{has_link}}

另一个选项没有capture

{% assign link = "http://example.com "%}
{% if link contains '://' %}
{% assign has_link = "yes" %}
{% else %}
{% assign has_link = "no" %}
{% endif %}
{{has_link}}

{% assign link = "example.com "%}
{% if link contains '://' %}
{% assign has_link = "yes" %}
{% else %}
{% assign has_link = "no" %}
{% endif %}
{{has_link}}

输出:

yes

no