液体标记中是否存在标准方法,以适应您想要在值之后输出空格的情况,但仅当该值存在时才会出现?
例如,假设我有四个值:prefix,first,middle,last。每个人都有第一个和最后一个,但只有一些人有前缀和/或中间。
如果我只做{{prefix}} {{first}} {{middle}} {{last}}
,那么如果没有前缀或没有中间名,我最终会得到额外的空格。
Mr. John Mortimer Smith <-- looks fine
Mary Jones <-- looks weird, extra space at beginning and in middle
当然,我可以做到
{% if prefix != "" %}{{prefix}} {% endif %}{{first}} {% if middle != "" %}{{middle}} {% endif %}{{last}}
这应该有效,但看起来很混乱。还有更好的方法吗?
谢谢!
我被问到一个例子。如果我去http://dotliquidmarkup.org/try-online 并输入
{% assign first = "Mary" %} {% assign last = "Smith" %}
{{ prefix }} {{first}} {{middle}} {{last}}
然后我得到
Mary Smith
(在Mary之前有一个空格,在Mary之后有两个空格,因为前缀和中间是空的)
但我想得到
Mary Smith
答案 0 :(得分:1)
http://dotliquidmarkup.org/try-online在<pre>
标记中显示流体解析结果,以保留空格。
在标准html页面中不会出现这种情况,除pre
和code
标记外,多个空格只显示一个空格。
如果您真的想摆脱多个空格,可以使用normalize_whitespace
过滤器。
---
title: Whitespaces
names:
-
prefix: m
first: first
middle: middle
last: last
-
prefix: m
first:
middle: middle
last: last
-
prefix:
first: first
middle:
last: last
---
{% for p in page.names %}
{% capture fullName %}
{{ p.prefix }} {{ p.first }}
{{ p.middle }} {{ p.last }}
{% endcapture %}
<pre>|{{ fullName }}|</pre>
<pre>|{{ fullName | normalize_whitespace }}|</pre>
{% endfor %}
不再有双重空格或任何不必要的空格。