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

VTL脚本开发:拆分组合字符串为两个变量的实现方法

在VTL中拆分名称与后缀数字为两个变量的实现方法

核心思路

利用VTL支持的Java字符串正则匹配能力,通过捕获组提取名称和数字部分;如果有明确分隔符,也可以用split方法快速拆分。


场景1:无分隔符,名称+后缀数字结尾(如"AcmeCorp1234"、"Smith56")

这是最常见的场景,假设字符串以非数字内容开头,末尾为连续数字:

#set($namePattern = "^([^\d]+)(\d+)$")
#set($isMatch = $customer.name.matches($namePattern))

#if($isMatch)
    #set($CustomerName = $customer.name.replaceAll($namePattern, "$1"))
    #set($CustomerPartNumber = $customer.name.replaceAll($namePattern, "$2"))
#else
    #set($CustomerName = $customer.name)
    #set($CustomerPartNumber = "")
#end
  • 正则^([^\d]+)(\d+)$:[^\d]+匹配所有非数字字符(名称部分),\d+匹配结尾的连续数字(编号部分)
  • matches方法验证字符串格式是否符合预期
  • else分支处理格式不符的情况,避免变量为空或输出异常

场景2:名称与数字间有明确分隔符(如"Acme-Corp_789"、"Customer XYZ-1001")

如果名称和数字之间有固定分隔符(如-、_、空格),可以调整正则或用split:

方法1:正则适配分隔符

#set($namePattern = "^(.+?)([-_\s])(\d+)$")
#set($isMatch = $customer.name.matches($namePattern))

#if($isMatch)
    #set($CustomerName = $customer.name.replaceAll($namePattern, "$1"))
    #set($CustomerPartNumber = $customer.name.replaceAll($namePattern, "$3"))
#else
    #set($CustomerName = $customer.name)
    #set($CustomerPartNumber = "")
#end
  • 正则中的[-_\s]匹配连字符、下划线或空格,可根据实际分隔符修改

方法2:使用split方法(适合单一固定分隔符)

比如分隔符是_:

#set($splitParts = $customer.name.split("_"))

#if($splitParts.size() == 2)
    #set($CustomerName = $splitParts[0])
    #set($CustomerPartNumber = $splitParts[1])
#else
    #set($CustomerName = $customer.name)
    #set($CustomerPartNumber = "")
#end

表格输出示例

拆分完成后,直接在表格中使用变量即可:

<table>
    <thead>
        <tr>
            <th>客户名称</th>
            <th>客户编号</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>$CustomerName</td>
            <td>$CustomerPartNumber</td>
        </tr>
    </tbody>
</table>

注意事项

  • 如果名称本身包含数字(如"Acme2024Corp123"),需要调整正则为^(.+?)(\d+)$,这样会把末尾的连续数字拆分为编号,前面的所有内容作为名称
  • 务必添加格式校验的else分支,处理不符合规则的字符串,避免页面输出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:46:09