如何在jekyll中填充字符串?

时间:2014-12-27 20:20:42

标签: ruby jekyll liquid

说我正在增加像这样的整数

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

我怎么能像这样填充它?

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

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

我想它可能像一样代表像sprintf('%d4',页面)但显然这种语法不适用于liquid / jekyll。

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

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:1)

使用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 }}