W poniższym fragmencie próbuję zastąpić mapy skrótów znalezione z zakresów.
var maps = new Array();
maps["k"] = "Letter K";
maps["g"] = "Letter G";
maps["c"] = "Letter C";
var regex = /([kgc])a([kgc])a([kgc])a/g;
var text = "kagaca";
text = text.replace(regex,maps["$1"]+maps["$2"]+maps["$3"]);//this does"nt work
console.log(text);
text = "kagaca";
text = text.replace(regex,maps["k"]+" "+ maps["g"]+" "+ maps["c"]);//this works
console.log(text);
Wyrażenie statycznie regularne działa, utknąłem przy zastępowaniu go z zakresów.
Odpowiedzi:
2 dla odpowiedzi № 1Udało mi się użyć deklarowanej funkcji w replace
. Myślę, że javascript źle zrozumiał $X
wywoływana na mapie.
var maps = new Array();
maps["k"] = "Letter K";
maps["g"] = "Letter G";
maps["c"] = "Letter C";
var regex = /([kgc])a([kgc])a([kgc])a/g;
var text = "kagaca";
text = text.replace(regex,function(){
return maps[arguments[1]]+maps[arguments[2]]+maps[arguments[3]]
});//this now works
console.log(text);
text = "kagaca";
text = text.replace(regex,maps["k"]+" "+ maps["g"]+" "+ maps["c"]);//this works
console.log(text);