我正在尝试解析进行检查的文本。我需要替换最后一个“ y”并添加“ pesos con”。我最初尝试将字符串拆分为'y'并加入,但是事实证明,当写出的数字带有'y'时,可以有多个'y',例如:
''cien mil seiscientos cincuenta y ocho y 01/100'
期望的结果应该是:'cien mil seiscientos cincuenta y ocho pesos con 01/100'
我尝试在每个字符处分割字符串(?split('')),然后从字符串末尾开始计数到第二个“ y”所在的索引,因为它与字符串末尾的距离应始终相同。
然后,当我在每个字符上复制到新字符串时,我遍历了分割后的字符串。如果索引等于最后一个“ y”(长度为7)的索引,则将“ pesos con”添加到新字符串中,而不是元素“ y”。如果索引不是最后一个'y'的索引,我将复制该字符。
[不幸的是,索引似乎没有按预期方式工作,因为我似乎无法在正确的位置用'pesos con'打印索引。如何改进以实现此逻辑?
<#function removeY>
<#list records as check>
<#assign str = ''>
<#assign totalWordsArr = check.totalwords?split("")>
<#list totalWordsArr as x>
<#if x?index != x?length-7>
<#assign str = str + " " + x + " ">
<#elseif x?index ==x?length-7>
<#assign str = " " + str + " " + 'pesos con '>
</#if>
</#list>
<#return str>
</#list>
</#function>
我想出了这个解决方案:
<#assign x="cien mil seiscientos cincuenta y ocho y 01/100">
${x?keep_before_last(" y ")} pesos con ${x?keep_after_last(" y ")}
带来所需的结果:
cien mil seiscientos cincuenta y ocho pesos con 01/100