Shopify 如何在液体模板中验证输入是数字还是字符串?

Shopify 如何在液体模板中验证输入是数字还是字符串?,shopify,liquid,dotliquid,Shopify,Liquid,Dotliquid,我将接收两种组合的输入值,数值或字符串值。如果输入为数字,则需要将其映射到一个输出字段,如果输入为字符串,则需要映射到另一个字段 例如,输入: [{ "Input": "ABC123" }, { "Input": "12345" }] 输出: [{ "String": "ABC123" }, { "Number": "12345" }] 您可以使用json过滤器来确定类型,因为它将用引号而不是数字来包装字符串。检查“字符,你就会知道它是否是一个数字。它也会覆盖你的边缘情

我将接收两种组合的输入值,数值或字符串值。如果输入为数字,则需要将其映射到一个输出字段,如果输入为字符串,则需要映射到另一个字段

例如,输入:

[{
"Input": "ABC123"
 },
 {
  "Input": "12345"
  }]
输出:

[{
 "String": "ABC123"
 },
 {
 "Number": "12345"
 }]

您可以使用json过滤器来确定类型,因为它将用引号而不是数字来包装字符串。检查“字符,你就会知道它是否是一个数字。它也会覆盖你的边缘情况

{% assign var1 = "1" %}
{% capture testValue %}{{ var1 | json }}{% endcapture %}
{% if testValue contains '"' %}string{% else %}number{% endif %}

Dotliquid目前没有此功能。它是一个开源项目,您可以下载源代码并在StandardFilters.cs中更改/添加新方法。然后,您可以使用它来满足您的需求。您可以根据自定义需求添加任意数量的操作

e、 g 在StandardFilters.cs中添加以下方法

public static bool IsNumeric(object o)
{
    return double.TryParse(Convert.ToString(o), out double result);            
}
您可以在液体模板中使用此方法,如

{% assign string = '' %}
{% assign number = '' %}
{% assign isNumber = model.Input | IsNumeric %}
{% if isNumber == true %}
  {% assign number = model.Input %}
{% else %}
  {% assign string = model.Input %}
{% endif %}

0是有效的输入号码吗?