Вот первое, что пришло на ночь глядя

Код AS3:
var str:String = "Коля потратил %coins% на %apples% яблок"
trace(str);
var reg:RegExp = /%coins%|%apples%/g;
var coins:String = "100 рублей";
var apples:int =50;
var res:Array;
while(res=reg.exec(str)){
var repl:String;
switch(res[0]){
case "%coins%": repl = coins; break;
case "%apples%": repl = apples.toString(); break;
}
str = str.substr(0, reg.lastIndex-res[0].length)+repl+str.substr(reg.lastIndex,str.length);
reg.lastIndex -=(res[0].length-repl.length);
}
trace(str);