【问题标题】:How to verify if the input is numeric or string in liquid template?如何验证液体模板中的输入是数字还是字符串?
【发布时间】:2019-10-31 10:13:04
【问题描述】:

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

例如,输入:

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

输出:

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

【问题讨论】:

  • 0 是一个有效的输入数字吗?

标签: shopify liquid dotliquid


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    例如 在 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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-05
      • 2015-04-29
      • 2023-04-09
      • 2017-12-04
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多