2014-12-27 65 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 }}