0

Liquid Markup 中是否有一种标准方法来解决您想要在一个值之后输出一个空格的情况,但前提是该值存在?

例如,假设我有四个值: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 之后有两个空格,因为 prefix 和 middle 为空)

但我想得到

Mary Smith
4

1 回答 1

1

http://dotliquidmarkup.org/try-online<pre>在保留空格的标记中呈现液体解析结果。在标准 html 页面中不会出现这种情况,其中除了precode标签之外,多个空格都显示为一个空格。

如果你真的想摆脱多个空格,你可以使用normalize_whitespace过滤器。

空格.md

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

不再有双空格或任何不必要的空格。

于 2017-08-29T20:17:50.507 回答