首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在freemarker中只替换字符串中单词的最后一个实例

在freemarker中只替换字符串中单词的最后一个实例
EN

Stack Overflow用户
提问于 2020-02-08 02:08:14
回答 1查看 107关注 0票数 1

我正在试着分析出支票上的文本。我需要替换最后的'y‘,并添加'pesos con’。我最初尝试在'y‘处拆分字符串并加入,但结果是,当写出的数字有'y’时,可以有多个'y‘:

‘'cien seiscientos 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‘。如何改进这一点以实现这一逻辑?

代码语言:javascript
复制
    <#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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-08 16:59:42

我想出了这个解决方案:

代码语言:javascript
复制
<#assign x="cien mil seiscientos cincuenta y ocho y 01/100">
${x?keep_before_last(" y ")} pesos con ${x?keep_after_last(" y ")}

这将带来您需要的结果:

代码语言:javascript
复制
cien mil seiscientos cincuenta y ocho pesos con 01/100
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60118912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档