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

如何在FreeMarker中过滤字符串特殊字符及空值处理验证

ClickDimensions + Microsoft Dynamics 个性化邮件FreeMarker代码优化

一、特殊字符过滤与首字母大写实现

针对FirstName字段中存在的特殊字符(如%%John%%需转换为John),同时实现首字母大写的需求,无需嵌套${}语法,直接通过FreeMarker的过滤器组合即可完成:

${Recipient.contact.firstname[0]?replace("%%", "", "r")?capitalize}
  • ?replace("%%", "", "r"):全局替换所有%%为空字符串("r"表示全局匹配替换)
  • ?capitalize:将处理后的字符串首字母大写

二、空值适配的条件判断修正

你提供的原条件语句存在语法错误,??是FreeMarker的存在性判断运算符,不能作为字符串值进行比较。正确的空值适配写法如下:

写法一:分步赋值判断

<#assign firstname = Recipient.contact.firstname[0]!"" />
<#if firstname?trim == "">
  Customer
<#else>
  ${firstname?replace("%%", "", "r")?capitalize}
</#if>
  • Recipient.contact.firstname[0]!"":当字段为空或不存在时,默认赋值为空字符串
  • ?trim:去除字符串前后空格,避免因空格导致的误判
  • 若处理后字符串为空,则显示Customer,否则输出处理后的姓名

写法二:简洁链式写法

${(Recipient.contact.firstname[0]!""?trim)?replace("%%", "", "r")?capitalize! "Customer"}

通过链式过滤器组合,一步完成空值处理、特殊字符替换、首字母大写,最终若结果为空则显示Customer。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:49:49