Liquid数组字符串替换异常:仅最后一个元素生效求助
问题排查与修复:Liquid国家名称转换仅最后一个生效
问题根源
你的代码存在两个关键问题:
- 每次循环都直接使用原始的国家名称值(
product.metafields.custom.country_of_origin.value)执行替换,没有基于上一次的替换结果继续处理; - 每次循环都会覆盖
denonized变量的值,导致前几次循环的替换结果被丢弃,最终仅保留最后一次循环的执行结果。
修复后的代码
{% assign countries = "France, Chile, Spain, Australia" | split: ", "%} {% assign denonyms = "French, Chilean, Spanish, Australian" | split: ", "%} {% assign denonized = product.metafields.custom.country_of_origin.value %} {% assign d = countries.size | minus:1 %} {% for i in (0..d) %} {% assign denonized = denonized | replace: countries[i], denonyms[i] %} {% endfor %} {{ denonized }}
修复说明
- 提前将
denonized初始化为原始的国家名称值,确保后续替换是基于当前已处理的结果进行; - 循环内每次替换都更新
denonized变量,累积替换效果,避免前几次的结果被覆盖; - 最终输出的
denonized会完成所有匹配国家的称谓转换,不再仅生效最后一个元素。
内容的提问来源于stack exchange,提问作者Jackanapes
相关产品推荐
相关产品推荐

