You need to enable JavaScript to run this app. Freemarker中如何替换<li>元素并生成递增计数索引
优惠活动
大模型
产品
解决方案
定价
更多

Freemarker中如何替换<li>元素并生成递增计数索引

Freemarker 实现
  • 标签递增序号替换方案
  • 问题本质

    Freemarker 内置的replace为全局静态值替换,传入的替换值固定不变,无法根据匹配位置生成动态递增的计数索引,因此直接用replace方法无法实现需求。

    通用实现方案(兼容全版本Freemarker)

    通过字符串拆分+手动计数的逻辑完成替换,无版本依赖:

    <#-- 初始化列表计数 -->
    <#assign itemIndex = 0>
    <#-- 以转义后的<li>开始标签为分隔符拆分原内容 -->
    <#assign segments = content?split('&lt;li&gt;')>
    <#-- 跳过拆分产生的开头空片段,逐段处理内容 -->
    <#list segments[1..] as segment>
      <#assign itemIndex = itemIndex + 1>
      ${itemIndex} ${segment?replace('&lt;/li&gt;', '')}
    </#list>
    

    适配调整

    • 若content存储的是未转义的真实HTML标签(即标签为<li>/</li>而非转义实体),只需将代码中的分隔符、待替换闭合标签替换为对应的真实文本即可
    • 若存在带属性的li标签(如<li class="list-item">),需根据实际标签格式调整拆分匹配规则

    避坑提示

    • 单次全局replace(即使开启正则匹配)无法携带动态计数上下文,不能用来实现递增替换
    • 实现后输出效果与预期一致:移除所有li标签,在每段列表内容前拼接1、2、3格式的递增序号

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

    相关产品推荐
    方舟 Agent Plan

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

    最近更新时间:2026.11.09 14:45:04