You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FTL检查列表中字符串值是否含字符或仅为数字

处理价格区间并判断纯数字/含字符的FreeMarker实现

我来帮你完善这段处理价格区间的FreeMarker代码,同时实现你需要的判断每个区间值(或拆分后的部分)是仅由数字组成,还是包含非数字字符的逻辑。

完整代码实现

<#assign arr =["0-200000", "200001-500000" ,"500001 & above"]/>

<#list arr as prcVal>
    <#assign vals= prcVal?split('-')/>
    <#assign rangeStart = ""/>
    <#assign arrIndex = 0/>
    
    <#list vals as prcVal1>
        <#if prcVal1?index_of("& above") gt 0>
            <#-- 处理带字符描述的区间(如"500001 & above") -->
            <#assign prcVal2 = (prcVal1?split('&')[0])?trim/>
            <#-- 判断提取的数字部分是否为纯数字 -->
            <#if prcVal2?matches("^\\d+$")>
                <p>提取的数字部分 <strong>"${prcVal2}"</strong> 仅由数字组成</p>
            <#else>
                <p>提取的部分 <strong>"${prcVal2}"</strong> 包含非数字字符</p>
            </#if>
            <p>完整区间: <em>${prcVal}</em>(包含字符描述)</p>
        <#else>
            <#-- 处理普通数字区间段 -->
            <#if prcVal1?matches("^\\d+$")>
                <p>区间段 <strong>"${prcVal1}"</strong> 仅由数字组成</p>
            <#else>
                <p>区间段 <strong>"${prcVal1}"</strong> 包含非数字字符</p>
            </#if>
            <#-- 组合完整区间(仅针对普通数字区间) -->
            <#if arrIndex == 0>
                <#assign rangeStart = prcVal1/>
            <#else>
                <p>完整区间: <em>${rangeStart} - ${prcVal1}</em>(纯数字区间)</p>
            </#if>
        </#if>
        <#assign arrIndex = arrIndex + 1/>
    </#list>
    <hr/>
</#list>

关键逻辑说明

  • 纯数字判断:使用FreeMarker的?matches指令结合正则表达式^\\d+$,这个规则表示字符串从开头到结尾完全由数字组成,没有任何非数字字符。
  • 特殊区间处理:针对带& above的区间,先通过?split('&')拆分出数字部分,再用?trim去除前后空格,最后做纯数字校验。
  • 遍历与状态维护:用arrIndex变量记录当前拆分后的区间段索引,用来组合普通数字区间的首尾值。

扩展调整

如果你的价格区间可能包含带千分位逗号的数字(如100,000),可以调整纯数字判断的正则为^\\d+(,\\d+)*$,或者先去除逗号再判断:

<#assign cleanedVal = prcVal1?replace(",", "")/>
<#if cleanedVal?matches("^\\d+$")>
    <!-- 处理逻辑 -->
</#if>

内容的提问来源于stack exchange,提问作者Priyanka S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:57:26