液体:在空格中捕获字符串,可能跟随“触发字符串”吗?

问题描述 投票:0回答:1

当我什至不知道所有可能存在的颜色时,也可以在液体中进行下面的操作,我可以以某种方式捕获“ Color:”之后的下一整行,以使“ Color:”成为开始捕获的触发标签而下一行是决定何时停止捕获的触发器?

并且我是否还可以使用另一个单词作为结束捕获的触发,例如,如果我知道我一直想捕获描述中唯一的<strong></strong>标签之间的内容?

{% if product.description contains 'Color:' %}
{% if product.description contains 'Color: Red'%}{% assign TheColor = "Red" %}{% endif %} 
{% if product.description contains 'Color: Yellow'%}{% assign TheColor = "Yellow" %}{% endif %} 
{% if product.description contains 'Color: Ocean Blue'%}{% assign TheColor  = "Ocean Blue" %}{% endif %}  
{% if product.description contains 'Color: Light Blue'%}{% assign TheColor = "Ocean Blue" %}{% endif %} 
{% if product.description contains 'Color: Blue'%}{% assign TheColor = "Blue" %}{% endif %} 
{% if product.description contains 'Color: Black & white'%}{% assign TheColor = "Black & white" %}{% endif %} 
{% endif %} 

我已经花了几个小时来搜索类似的东西,我知道我十年前用长代码在Asp Classic中以某种方式做到了,但是我认为在Liquid中它应该超级简单?

我没有进行正规的流水教育(我可能会与其他许多人通过搜索找到这种流传的教育一样,所以在代码中使用简单的示例而不是“技术提示”或“线索”会很棒。

谢谢!

arrays string liquid capture
1个回答
0
投票

这里有一种很笨拙的方法来获得颜色,尽管感觉不是超级可靠:

{% assign color = product.description | split: "Color: " %}
{{ color | last }}

这会将描述拆分为一个数组。 Color:之前的所有内容都是第一个元素,Color:之后的所有内容都是第二个元素。在我们的输出中,我们只打印第二个元素。

如果在产品说明中的颜色声明后还有其他内容,这将无法正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.