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

Liquid中使用{% capture %}实现单词首字母大写,仅保留'And'小写的问题

解决Liquid中首字母大写时保留"And"小写的问题

问题根源

你之前用replace: ' And '没生效,大概率是{% capture %}捕获的内容里,单词之间的空格不是单个(循环缩进或换行导致多空格),导致匹配不到目标字符串。

方法一:循环时直接处理(推荐)

在遍历单词的阶段就判断处理,避免后续空格问题,代码更可靠:

{% assign words = contact.data.firstname | replace: '-', ' ' | split: ' ' %}
{% capture f_name %}
  {% for word in words %}
    {% assign capitalized_word = word | capitalize %}
    {% if capitalized_word == "And" %}
      and
    {% else %}
      {{ capitalized_word }}
    {% endif %}
    {% unless forloop.last %} {% endunless %}
  {% endfor %}
{% endcapture %}
{{ f_name }}

这段代码会把每个单词转成首字母大写,遇到转后为"And"的单词时,直接输出小写的"and",同时通过{% unless forloop.last %}控制单词间只保留一个空格,输出格式更整洁。

方法二:修复空格后再替换

如果想保留原来的捕获逻辑,先清理多余空格再替换:

{% assign words = contact.data.firstname | replace: '-', ' ' %}
{% assign words = words | split: ' ' %}
{% capture f_name %}
  {% for word in words %}
    {{ word | capitalize }}
  {% endfor %}{% endcapture %}
{{ f_name | strip_newlines | replace: '  ', ' ' | replace: ' And ', ' and ' }}

先用strip_newlines去掉捕获内容里的换行,再把多空格替换成单个空格,最后就能匹配到"And"并替换为小写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:25:42