2014-12-27 68 views
0

说我增加这样如何在jekyll中填充字符串?

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

的整数我怎么能填充它这样吗?

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

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

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

我在杰基尔/液体语法成长真的很失望(甚至不具有本机模!)这一边,怎么可能我用前导字符的字符串?

+0

你可以尝试中间人,它使用ERB而不是液体http://staticgen.com/middleman – 2014-12-27 20:44:28

+0

好吧,如果我要切换技术,我会切换到somethi ng node.js基于使用js语法,如http://wintersmith.io/。 – FlavorScape 2014-12-27 20:49:28

+0

我只是说它可能更容易,ERB是红宝石的一部分,所以这是一个少依赖 – 2014-12-27 20:51:35

回答

1

液体,你可以这样做:

{% 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 }}

5

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

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