У JavaScript є replace()метод об'єкта String для заміни підрядків. Цей метод може мати два аргументи. Перший аргумент може представляти собою рядок або шаблон регулярного вираження (об'єкт regExp), а другий аргумент може бути рядком або функцією. Приклад replace()методу, що має обидва рядкові аргументи, показаний нижче.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Зауважте, що якщо першим аргументом є рядок, заміняється лише перше виникнення підрядка, як у наведеному вище прикладі. Для заміни всіх випадків підрядки потрібно надати регулярний вираз g(глобальний) прапор. Якщо ви не надасте глобальний прапор, лише перше виникнення підрядки буде замінено, навіть якщо ви надаєте регулярний вираз у якості першого аргументу. Тож давайте замінимо всі випадки oneу наведеному вище прикладі.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Зауважте, що ви не загортаєте шаблон звичайного виразу в лапки, що зробить його рядком не об'єктом regExp. Щоб зробити заміну нечутливої до регістру, вам потрібно надати додатковий прапор, iякий робить шаблон регістру нечутливим. У такому випадку вищевказаний регулярний вираз буде /one/gi. Зверніть увагу на iдоданий тут прапор.
Якщо другий аргумент має функцію і якщо є відповідність, функція передається з трьома аргументами. Аргументи, які отримує функція, - це збіг, положення відповідності та оригінальний текст. Вам потрібно повернути те, на що слід відповідати. Наприклад,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Ви можете мати більше контролю над текстом заміни, використовуючи функцію як другий аргумент.
str_replaceтакож приймає два масиви однакової довжини, де кожна рядок у першому масиві замінюється на рядок у другому масиві на той самий індекс. Будь ласка, дивіться stackoverflow.com/a/5069776/296430 про єдину правильну функцію, яку я знайшов поки що, що імітує саме таку поведінку у javascript.