Hur man gör en "rå" strängsökning och ersättning i JavaScript, utan REGEX


Hur utför jag en korrekt sökning och ersättning av strängar i JavaScript utan någon REGEX alls?

Jag vet att dokumentationen säger att om det första argumentet till String.prototype.replace() är en sträng, snarare än ett regex, så kommer det att göra en bokstavlig ersättning. Praktiken visar att det INTE är helt sant:

"I am a string".replace('am', 'are')
--> "I are a string"

OK

"I am a string".replace('am', 'ar$e')
--> "I ar$e a string"

Fortfarande okej

"I am a string".replace('am', 'ar$$e')
--> "I ar$e a string"

INTE OKEJ!

Var är den andra dollartecknet? Letar den efter något som $1 för att ersätta med ett match från REGEX... som aldrig användes?

Jag är mycket förvirrad och frustrerad, några idéer?

Svar #1

Om du använder ersättningscallbacken istället för en strängliteral kommer den automatiska regexersättningen inte att utföras:

"I am a string".replace('am', () => 'ar$$e')