lua实现模版字符串替换

--[[

  最近做一个通信行业的语音导航项目,查话费业务,获取数据采用的是lua脚本,一开始采用的是拼接字符串的方式,后来感觉把字符串做成模版的方式,然后替换字符串,这样方便多了。

]]

function replace(str,paras)

local result = "";
while string.find(str, "${%s*[%w_]*%s*}") do
x,y = string.find(str, "${%s*[%w_]*%s*}");
result = result .. string.sub(str, 1, x-1);
a = string.sub(str,x,y);
result = result .. getParamValue(a, paras);
str = string.sub(str, y+1);
end
result = result .. str;
return result;
end


function getParamValue(a,b)
local name = string.gsub(a,"[$|{|}|%s]","");
if b[name] then
return b[name];
else
return "";
end

end


local str = "尊敬的客户,您的当前预存款为${fee_yck}元、未出帐话费为${fee_wcz}元,未出帐话费中在当月可继续使用的底线费用为${fee_ky}元,当月可用预存款总额为${fee_sum}元,其中普通预存款为${fee_ptyck}元,专用预存款为${fee_zyyck}元";
local map = {fee_yck=12,fee_wcz=23,fee_ky=34,fee_sum=45,fee_ptyck=56,fee_zyyck=67};
print(replace(str,map));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值