Javascript 替换<;李>;Freemarker中具有替换计数索引的元素

Javascript 替换<;李>;Freemarker中具有替换计数索引的元素,javascript,regex,replace,freemarker,Javascript,Regex,Replace,Freemarker,我需要一些东西来替换,比如Freemarker中的计数索引1、2、3等 以下是示例代码: <li>some text in list item one</li> <li>some text in list item two</li> <li>some text in list item three</li> 我尝试了replace函数,但它只会用单个值替换所有 ${content?replace('<li>',

我需要一些东西来替换
  • ,比如Freemarker中的计数索引1、2、3等

    以下是示例代码:

    <li>some text in list item one</li>
    <li>some text in list item two</li>
    <li>some text in list item three</li>
    
    我尝试了replace函数,但它只会用单个值替换所有
  • ${content?replace('<li>','-')}
    
    ${content?替换(“
  • ”,“-”)}
  • 要正确执行此操作,您需要一个HTML解析器(如JSOUP),或者更好的是,需要一个可以将HTML转换为纯文本的库。然后,您必须将该工具公开给模板,等等

    但是,问题是,如何用它的序数替换某物。您必须为此编写一个宏:

    <#-- Prints 1st parameter with replacements, inserting the ordinal of replacement before each. -->
    <#macro printWithNumberedReplacements s replaced replacement>
      <#local unprintedIdx = 0>
      <#list 1..10000000 as ordinal>
        <#local liIdx = s?index_of(replaced, unprintedIdx)>
        <#if liIdx == -1>
          ${s[unprintedIdx ..]}<#t>
          <#break>
        <#else>
          ${s[unprintedIdx ..< liIdx]}${ordinal}${replacement}<#t>
          <#local unprintedIdx = liIdx + replaced?length>
        </#if>
      </#list>
    </#macro>
    
    
    ${s[unprinteddx..]}
    ${s[unprinteddx..
    然后:

    <@printWithNumberedReplacements content '<li>' ' '/>
    
    
    
    <@printWithNumberedReplacements content '<li>' ' '/>