如何在jekyll中填充字符串?

Fla*_*ape 5 ruby liquid jekyll

假设我正在递增这样的整数

 {% capture page %}{{ page | plus: '1' }}{% endcapture %}
Run Code Online (Sandbox Code Playgroud)

我怎么能像这样垫?

 {% capture paddedPage %}{{ page | pad '0', 4 }}{% endcapture %}
Run Code Online (Sandbox Code Playgroud)

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

我想它可以表示为sprintf('%d4',页面),但显然这种语法不适用于liquid/jekyll.

我对jekyll/liquid语法感到非常失望(甚至没有原始模数!)除此之外,我怎么能填充带有前导字符的字符串?

小智 15

使用液体过滤器前置切片,如下所示:

{{ page | prepend: '0000' | slice: -4, 4 }}
Run Code Online (Sandbox Code Playgroud)


Dav*_*uel 3

使用 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 %}
Run Code Online (Sandbox Code Playgroud)

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