/ / Remplacer par des plages et des cartes de hachage - javascript, regex, range

Remplacer par des plages et des cartes de hachage - javascript, regex, range

Dans l'extrait ci-dessous, j'essaie de remplacer les hashmaps trouvés dans les plages.

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

L'expression statique régulière fonctionne, je suis obligé de la remplacer à partir de plages.

Réponses:

2 pour la réponse № 1

J'ai réussi en utilisant une fonction déclarée dans replace. Je pense que javascript comprend mal le $Xappelé dans la carte.

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