1. 程式人生 > >lua實現模版字串替換

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));