【问题标题】:Is there a way to split text on whitespace in Liquid?有没有办法在 Liquid 中的空白处分割文本?
【发布时间】:2012-08-20 18:37:02
【问题描述】:
我正在尝试将 Jekyll 帖子的内容拆分为单词,并尝试了以下方法:
{% for word in post.content | split:' ' %}
{% do some stuff %}
{% endfor %}
不幸的是,这没有任何作用; 'word' 最终成为整个帖子。我在 Github Pages 上使用这个代码,所以很遗憾我无法编写插件来处理这个问题。我是否错误地使用了拆分过滤器? Liquid 是否支持我正在尝试做的事情?
【问题讨论】:
标签:
templates
jekyll
liquid
【解决方案1】:
过滤器(例如拆分)只能用于 {{ outputs }} 而不能用于 {% tags %}。
您也许可以使用以下捕获功能完成拆分:
{% 捕获'foo' %} {{ post.content |拆分:' ' }} {% endcapture %}
【解决方案2】:
您似乎可以使用split:  分割空格。
所以你可以试试这样的:
{% capture words %}{{ post.content | split: }}{% endcapture %}
或:
{% assign words = post.content | split: %}
从我目前的测试来看,您似乎应该使用后者(分配标记),因为在将值分配给变量时,捕获标记似乎对数组元素进行了隐式连接。
使用:
{% for post in site.posts limit:1 offset:6 %}
{% assign words = post.content | split: %}
{% for word in words %}{{ word }} {% endfor %}
{% endfor %}
似乎完全复制了帖子内容。内部 for 循环中的空格很重要。
就像现在的注释一样,如果您需要用空格将某些单词重新连接在一起,则连接标记似乎需要在字符周围加上引号,例如:join:' '。
编辑:
我最终还尝试对空白进行一些拆分,虽然它在我的开发环境中有效,但在 Github Pages 上却无效。看起来 Pages 正在运行版本 2.2.2,而 split() 过滤器是在版本 2.3.0 中引入的。我的开发环境运行的是 2.4.1。希望我们可以纠缠 Github 上的优秀人员,让他们更新他们的 Liquid 版本。 :)