I'm trying to inject some code into a file by using replace. The problem is if the target code contains any of the replace() function's special character sequences, namely $$, it will do something different than what I expect, which is to just copy the characters exactly as they are.
'replaceme'.replace('replaceme', '$$');
you would think this would result in $$ but it actually returns $
Is there a way to disable this functionality so that it maintains the $$ like I want?
CodePudding user response:
No idea why the $$ wasn't working, I too am wondered.
But you can get the result by using the callback function.
'replaceme'.replace('replaceme', () => '$$');
CodePudding user response:
If you do not like to apply the replacement string patterns, you can use a replacement function:
'replaceme'.replace('replaceme', (_match) => '$$');
CodePudding user response:
This might be a bit hacky, but you can create a new method on String that replaces all $ characters in the replacement string with $$:
function replaceRaw(original, match, text) {
text = text.replaceAll('$', '$$$$');
return original.replace(match, text);
}
console.log(replaceRaw('replaceme', 'replaceme', '$$'));
Note that $$ in the replacement text will become a single $, so this new method makes all $s in the replace $$ (see this MDN article).
