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>' ' '/>