Ruby 如何在jekyll中填充字符串?

Ruby 如何在jekyll中填充字符串?,ruby,jekyll,liquid,Ruby,Jekyll,Liquid,假设我对这样一个整数进行递增 {% capture page %}{{ page | plus: '1' }}{% endcapture %} 我怎么能这样垫呢 {% capture paddedPage %}{{ page | pad '0', 4 }}{% endcapture %} 其中4是填充位置数,“0”是填充字符串?最终结果如下所示:0001,其中page的值为1。我该如何内联或在筛选器中执行此操作 我想它可以用sprintf(“%d4”,page)来表示,但显然这种语法不适

假设我对这样一个整数进行递增

 {% capture page %}{{ page | plus: '1' }}{% endcapture %}
我怎么能这样垫呢

 {% capture paddedPage %}{{ page | pad '0', 4 }}{% endcapture %}
其中4是填充位置数,“0”是填充字符串?最终结果如下所示:
0001
,其中page的值为1。我该如何内联或在筛选器中执行此操作

我想它可以用sprintf(“%d4”,page)来表示,但显然这种语法不适用于liquid/jekyll


我对jekyll/liquid语法(甚至没有本机模数!)越来越失望了,撇开它不谈,我如何用前导字符填充字符串呢?

使用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 %}
{%assign pad=4%}
{%assign padStr='0%}
{%assign number=“1 | 12 | 123 | 1234”| split:|“%”
{%表示数字中的数字%}
{%assign strLength=number | size%}
{%分配焊盘长度=焊盘|减:strLength%}
{%如果焊盘长度>0%}
{%assign padded=number%}
{(1..padLength)%中的位置为%
{%assign padded=padded | prepend:padStr%}
{%endfor%}
{{number}填充到{{padded}

{%else%} {{number}无需填充

{%endif%} {%endfor%}
注:液体模数过滤器为
{12 |模数:5}}

使用液体过滤器,如下所示:

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

你可以试试Middleman,它使用ERB而不是Liquid如果我要切换技术,我会切换到使用js语法的node.js。我只是说这可能会更容易,ERB是ruby的一部分,所以这少了一个依赖性哈,是的Liquid是一个奇怪的模板选择。我想,既然它起源于电子商务,他们就希望“安全”胜过语法糖。最佳答案: