• Работа с substring. Как изменить текст внутри string?

    z80b
    @z80b
    Frontend
    const replaceSubstring = (string, words, substring) => {
        const [ word1, word2 ] = words.split(/\s/);
        const re = new RegExp(`(${word1}\\s?).+?(\\s?${word2})`);
        return string.replace(re, `$1${substring}$2`);
    };
    Ответ написан
    Комментировать
  • Работа с substring. Как изменить текст внутри string?

    @dimoff66
    Кратко о себе: Я есть
    Вариант с поиском строковыми функциями

    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))
    }
    Ответ написан
    Комментировать