If语句中是否包含和包含小写字母

时间:2018-08-23 01:35:51

标签: shopify liquid

我尝试在使用downcase条件的同时在if语句中使用contains。我不敢相信没有适用于Google的解决方案。

这是我到目前为止尝试过的:

{% if collection.tags | downcase contains "womens" %}
{% if {{collection.tags | downcase}} contains "womens" %}
{% if {{collection.tags}} | downcase contains "womens" %}

我希望不必循环数组,如果可能的话,将缩进大小写的字符串分配回一个新数组中,只是为了保持干净和高效。

1 个答案:

答案 0 :(得分:1)

您不能在Liquid的if语句中操作值-您需要将小写的值分配给变量,然后使用它。

因此,在您的情况下,类似:

{% assign collection_tags = collection.tags | join: '~~~' | downcase | split: '~~~' %}
{% if collection_tags contains 'womens' %}

注意:

downcase是字符串操作,而不是数组操作,因此上面的代码使用join将数组变成带有某些定界符的单个长字符串,该定界符不应出现在您的任何标签中,然后在更改大小写后split-使用相同的定界符将该字符串返回到数组中。

如果我们仅在数组本身上使用downcase,Shopify将使用一个空字符串隐式加入数组,然后您的contains语句将在数组中寻找子字符串womens。导致斑点。相比之下,在数组上使用contains时,Shopify将仅匹配与您的搜索词完全匹配的标签。

为说明一下,如果您的集合标签为['Not-For-Women','Stuff']downcase-直接对数组进行排序将为您提供字符串'not-for-womenstuff',该字符串恰好包含子字符串'womens',并且意外的假阳性。