You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Liquid语法正确拼接带空格的全名?有无更简洁写法?

在Liquid中正确拼接含可选中间名的全名

问题原因

你当前代码生成JohnSmith而非John Smith的核心问题是误用了concat过滤器:Liquid的concat是专门用于数组拼接的工具,并不适用于字符串拼接。当你对字符串使用concat时,它会将字符串转换为单元素数组,拼接后的数组转为字符串时会直接连缀元素,导致空格被错误处理。

修正后的基础实现

将字符串拼接方式从concat改为Liquid的字符串拼接运算符+,即可正确保留空格:

{% assign firstName = 'John' %}
{% assign middleName = '' %}
{% assign lastName = 'Smith' %}

{% assign title = '' %}

{% if firstName != blank %}
{% assign title = title + firstName + ' ' %}
{% endif %}

{% if middleName != blank %}
{% assign title = title + middleName + ' ' %}
{% endif %}

{% if lastName != blank %}
{% assign title = title + lastName %}
{% endif %}

{{ title | strip }}

这里用!= blank替代了!= nil and != '',是Liquid中判断变量非空的简洁写法。

更简洁的实现方式

利用数组过滤+拼接的方式,无需手动处理每个字段的空格和判断,代码更简洁健壮:

{% assign firstName = 'John' %}
{% assign middleName = '' %}
{% assign lastName = 'Smith' %}

{% assign nameParts = [firstName, middleName, lastName] | reject: 'blank' %}
{{ nameParts | join: ' ' }}

逻辑说明

  1. 将三个名字字段放入数组[firstName, middleName, lastName]
  2. 使用reject: 'blank'过滤掉数组中的空字符串和nil值
  3. 用join: ' '将剩余的非空元素用空格连接,自动生成正确的全名

这种写法能适配任意字段为空的场景(比如只有名和姓、只有中间名和姓等),无需修改代码。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:55:26