为什么Jekyll的Liquid 'contains'返回一个字符串?

7

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

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

对于这个片段,external_link的值将与link.href的值相同(我使用命令{{ external_link }}检查了external_link的值)。
即使在右侧加上括号,我也会得到相同的结果:
{% assign external_link = (link.href contains '://') %}

问题是什么,如何获得contains表达式的true/false结果?

1个回答

11
你可以使用 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

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