如何在Liquid中移除制表符?Jekyll静态站点场景求助
解决Jekyll/Liquid中无法移除制表符的问题
我明白你在处理Jekyll内容时遇到的制表符移除难题了——混杂来源的内容确实不好从源头处理,而Liquid过滤器的转义细节很容易踩坑。你当前代码里的问题出在制表符的表示方式上:
你写的remove: '\t'其实是在尝试移除字面量字符串\t(反斜杠加字母t),而不是实际的制表符字符(ASCII码9的那个控制字符)。
修正方案
方案1:直接使用实际制表符
把remove: '\t'替换成直接输入一个真实的制表符(按键盘上的Tab键):
"article" : "{{ post.content | markdownify | strip_html | strip_newlines | remove: ' ' | strip | escape_once | remove: '\[' | replace: '\ ', ' ' | remove: '\]' | remove: '\(' | remove: '\)' }}"
注意:上面代码里remove: ' '的单引号之间是实际的Tab字符,不是\t。
方案2:用Liquid捕获制表符(更可靠,避免编辑器自动替换Tab为空格)
如果你的编辑器会自动把Tab转成空格,可以先通过capture标签定义制表符变量,再用它来移除:
{% capture tab_char %}{% tab %}{% endcapture %} "article" : "{{ post.content | markdownify | strip_html | strip_newlines | remove: tab_char | strip | escape_once | remove: '\[' | replace: '\ ', ' ' | remove: '\]' | remove: '\(' | remove: '\)' }}"
额外优化建议
调整过滤器顺序会让处理更高效:把strip放在移除制表符之后,这样能同时去掉制表符移除后留下的多余空格;另外escape_once最好放在最后,避免提前转义影响其他过滤器的处理。
内容的提问来源于stack exchange,提问作者ranvel
相关产品推荐
相关产品推荐

