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

如何将JSON字段值替换至短信模板的对应变量中?

实现短信模板变量替换的完整方案

嘿,这个需求很常见,我给你补全你已经开始写的循环实现,再提供几个更健壮、更灵活的方案,供你参考:

方案一:补全你初始的循环思路

这是最贴合你现有代码的实现,逻辑简单直接:

const eventVariables = ['customerName','date','amount'];
const info = { 'customerName':'Ashish Maity', 'date': '14-04-18', 'amount':'500' };
let smsBody = 'Dear customerName, we have received Rs.amount on date';

// 补全你的for循环
for(let i=0; i<eventVariables.length; i++) {
  const currentVar = eventVariables[i];
  // 将模板中的变量名替换为info对象对应的属性值
  smsBody = smsBody.replace(currentVar, info[currentVar]);
}

console.log(smsBody);
// 输出结果:Dear Ashish Maity, we have received Rs.500 on 14-04-18

这个方法的好处是完全贴合你一开始的思路,容易理解和维护,适合变量数量不多的场景。

方案二:正则匹配替换(避免部分匹配问题)

如果模板里有可能出现和变量名类似的字符串(比如customerName123),上面的简单替换会误匹配。用正则可以确保只替换完全匹配的变量名,还能支持同一个变量多次出现的情况:

const eventVariables = ['customerName','date','amount'];
const info = { 'customerName':'Ashish Maity', 'date': '14-04-18', 'amount':'500' };
let smsBody = 'Dear customerName, we have received Rs.amount on date. customerName thanks you!';

eventVariables.forEach(variable => {
  // 创建全局匹配的正则,确保替换所有出现的变量
  const matchRegex = new RegExp(variable, 'g');
  smsBody = smsBody.replace(matchRegex, info[variable]);
});

console.log(smsBody);
// 输出结果:Dear Ashish Maity, we have received Rs.500 on 14-04-18. Ashish Maity thanks you!

方案三:无需维护变量数组的简洁写法

如果info对象的键刚好完全对应模板里的所有变量,其实可以不用维护eventVariables数组,直接遍历info的属性来完成替换,减少重复维护的工作量:

const info = { 'customerName':'Ashish Maity', 'date': '14-04-18', 'amount':'500' };
let smsBody = 'Dear customerName, we have received Rs.amount on date';

// 遍历info的所有键,自动替换模板中的对应变量
Object.keys(info).forEach(key => {
  smsBody = smsBody.replace(new RegExp(key, 'g'), info[key]);
});

console.log(smsBody);

这种方法更灵活,后续如果新增变量,只要在info里添加对应的键值对即可,不用修改变量数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:24:09