J'essaie de remplacer une valeur dans une chaîne par un double bouclé (utilisé par le facteur pour la substitution de variable), mais chaque fois que j'essaie de citer ou d'échapper aux accolades, j'obtiens toujours des guillemets échappés supplémentaires ou des accolades doubles échappées, tous rompre la substitution :

Chaîne d'origine:

"header": [{"key": "x-device-auth","value": "\"token\""}]

OriginalString.replace('token','{{token}}')

Résultat:

"header":[{"key":"x-device-auth","value":"\"{{token}}\""}]

Si je recherche .replace('\"token\"','{{token}}'), je n'obtiens pas de correspondance. La chaîne finale doit être :

"header": [{"key": "x-device-auth","value": "{{token}}"}]
1
sansSpoon 16 mars 2019 à 12:56

2 réponses

Meilleure réponse

Vous devriez rechercher token avec les guillemets doubles échappés, car vous souhaitez également les remplacer.

var originalString = '"header": [{"key": "x-device-auth","value": "\\"token\\""}]';
console.log(originalString);
console.log(originalString.replace('\\"token\\"','{{token}}'));

originalString = '"header": [{"key": "x-device-auth","value": "\"token\""}]';
console.log(originalString);
console.log(originalString.replace('"token"','{{token}}'));

J'ai ajouté deux cas, l'un avec la chaîne d'origine contenant en fait des barres obliques inverses (première définition de la chaîne d'origine). La seconde sans. Choisissez celui qui correspond le mieux à votre entrée réelle :-)

2
Christoph Herold 16 mars 2019 à 10:18

Je ne vois pas que la chaîne d'entrée a des caractères d'échappement appropriés appliqués. Comme vous avez posté une question dans la balise javascript, j'ai essayé ci-dessous avec javascript et cela donne les résultats requis.

var str = "\"header\": [[{\"key\": \"x-device-auth\",\"value\": \"token\"}]";
  var res = str.replace('token','{{token}}');
0
Tukaram Bhosale 16 mars 2019 à 10:13