Вариант с поиском строковыми функциями
function replaceSubstring(string, words, substring) {
// Получаем слова между которыми искать замену
const [word1, word2] = words.split(' ')
// Находим индексы этих слов
const [pos1, pos2] = [string.indexOf(word1), string.indexOf(word2)]
if (pos1 < 0 || pos1 + word1.length >= pos2) return string
// Добавляем пробелы в строку замены, если отсутствуют
if (!substring.startsWith(' ')) substring = ' ' + substring
if (!substring.endsWith(' ')) substring += ' '
// Возвращаем новую стрроку с итерационным вызовом, так как могут быть и другие вхождения
return string.substring(0, pos1 + word1.length) +
substring +
word2 +
replaceSubstring(string.substring(pos2 + word2.length), words, substring)
}
Вариант с поиском через регулярные выражения
function replaceSubstring2(string, words, substring) {
if (!substring.startsWith(' ')) substring = ' ' + substring
if (!substring.endsWith(' ')) substring += ' '
const regex = words.replace(' ', '.+?')
return string.replaceAll(new RegExp(regex, 'g'), words.replace(' ', substring))
}