【问题标题】:how to pad a string in jekyll?如何在 jekyll 中填充字符串?
【发布时间】:2014-12-27 20:20:42
【问题描述】:

假设我正在像这样递增一个整数

 {% capture page %}{{ page | plus: '1' }}{% endcapture %}

我怎么能这样垫呢?

 {% capture paddedPage %}{{ page | pad '0', 4 }}{% endcapture %}

其中 4 是填充位置的数量,而 '0' 是填充字符串?最终结果将如下所示:0001 其中 page 的值为 1。如何内联或在过滤器中执行此操作?

我猜它可能表示像 sprintf('%d4', page) 但显然这种语法不适用于液体/jekyll。

我对 jekyll/liquid 语法越来越失望(甚至没有原生模数!)除此之外,我如何用前导字符填充字符串?

【问题讨论】:

  • 你可以试试 Middleman,它使用 ERB 代替 Liquid staticgen.com/middleman
  • 好吧,如果我要切换技术,我会切换到基于 node.js 的东西,它使用像 wintersmith.io 这样的 js 语法。
  • 我只是说它可能更容易,ERB 是 ruby​​ 的一部分,因此减少了一个依赖
  • 哈哈,是的,Liquid 是一个奇怪的模板选择。我想既然它源于电子商务,他们想要“安全”而不是语法糖。

标签: ruby jekyll liquid


【解决方案1】:

使用液体过滤器prependslice,像这样:

{{ page | prepend: '0000' | slice: -4, 4 }}

【讨论】:

    【解决方案2】:

    使用 Liquid 你可以做到:

    {% assign pad     = 4 %}
    {% assign padStr  = '0' %}
    {% assign numbers = "1|12|123|1234" | split: "|" %}
    {% for number in numbers %}
      {% assign strLength = number | size %}
      {% assign padLength = pad | minus: strLength %}
      {% if padLength > 0 %}
        {% assign padded = number %}
        {% for position in (1..padLength) %}
          {% assign padded = padded | prepend: padStr %}
        {% endfor %}
        <p>{{ number}} padded to {{ padded }}</p>
      {% else %}
        <p>{{ number}} no padding needed</p>
      {% endif %}
    {% endfor %}
    

    注意:液体模数过滤器是{{ 12 | modulo: 5 }}

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 2020-03-16
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 2023-04-02
      相关资源
      最近更新 更多