JavaScript: Jak podmienić wielokrotne występowanie frazy w tekście?

Opublikowano: 10.06.2021 - tagi: JavaScript Tekst NodeJS

Podmiana tekstu w JavaScript jest dość prosta:

const someText = 'Lorem ipsum: {{message}}';
console.log(someText.replace('{{message}}', 'Hello!'));

Fraza {{message}} zostanie podmieniona. Ale jeśli, w tekście występowałaby więcej niż jeden raz to zostanie zastąpiona tylko ta pierwsza:

const someText = 'Lorem ipsum: {{message}}. Lorem ipsum: {{message}}';
console.log(someText.replace('{{message}}', 'Hello!'));

Wynik:

Lorem ipsum: Hello!. Lorem ipsum: {{message}}

Jest kilka sposobów na podmianę tekstu:

Funkcja replaceAll

Możemy użyć replaceAll

const someText = 'Lorem ipsum: {{message}}. Lorem ipsum: {{message}}';
console.log(someText.replaceAll('{{message}}', 'Hello!'));

Inny sposób

Jakiś czas temu miałem ten problem w NodeJS, ale tam replaceAll nie była obsługiwana. Można to obejść na przykład tak:

const replaceAll = (text, phrase, value) => text.split(phrase).join(value);
const someText = 'Lorem ipsum: {{message}}. Lorem ipsum: {{message}}';
console.log(replaceAll(someText, '{{message}}', 'Hello!'));