Как вывести не статическую информацию в методе .replace? JS

Я загрузил текстовый файл через input и через метод replace создал объекто-подобный текст и разделил их на отдельные объекты, но в итоге получил кучу объектов с одинаковой переменной: Изначально текст выглядит так:

введите сюда описание изображения

Таких секций Документов больше 100 , после преобразования данным кодом:

public onChange(fileList: FileList): void {
    let file = fileList[0];
    let fileReader: FileReader = new FileReader();
    let self = this;
    fileReader.onloadend =  function(x) {
      self.fileContent = fileReader.result;
      const arrFile = (self.fileContent)
       if (/1CC/gi) {
        const str1 = arrFile
        .replace(/КонецРасчСчет|КонецДокумента/g,'}')
        .replace(/=/g,":'")
        .replace(/1CClientBankExchange/g,`let infoDockumentArr = {`)
        .replace(/СекцияДокумент/g,`let dockumentArr = {`)
        .replace(/СекцияРасчСчет/g,'} \nlet infoArr = {')
        .replace(/\r/g, "',")
        .replace(/Номера/g, 'Number')
        .replace(/Номер:/g, 'docNumber:')
        .replace(/Дата:/g,'docDate:')
        .replace(/Сумма:/g,'sum:')
        .replace(/Списано:/g,'Decommissioned:')
        .replace(/Поступило/g,'Received')
        .replace(/Плательщик:/g,'payer:')
        .replace(/Плательщик1:/g, 'payer1:')
        .replace(/Плательщик/g, 'payer')
        .replace(/Счет:/g, 'Account:')
        .replace(/ИНН:/g, 'Inn:')
        .replace(/Расч/g, 'checking')
        .replace(/Кор/g, 'Correspondent')
        .replace(/БИК:/g,'Bic:')
        .replace(/Банк1:/g, 'Bank1:')
        .replace(/Получатель/g, 'recipient')
        .replace(/Получатель1/g, 'recipient1')
        .replace(/КПП:/g, 'Kpp:')
        .replace(/Вид/g, 'type')
        .replace(/Оплаты:/g, 'OfPayment:')
        .replace(/Назначение/g, 'purposeOf')
        .replace(/Платежа:/g, 'Payment:')
        .replace(/Очередность:/g, 'priority:')
        .replace(/Код/g, 'code')
        .replace(/ВерсияФормата/g, 'version')
        .replace(/Формата/g, 'Format')
        .replace(/ировка/g, 'Type')
        .replace(/Отправитель/g, 'Sender')
        .replace(/Создания/g, 'Create')
        .replace(/Время/g, 'time')
        .replace(/Начала/g, 'Start')
        .replace(/Конца/g, 'End')
        .replace(/Начальный/g, 'elementary')
        .replace(/Конечный/g, 'finite')
        .replace(/Остаток/g, 'Remainder')
        .replace(/Всего/g, 'total')
        .replace(/Поступило/g, 'Received')
        .replace(/Статус/g, 'status')
        .replace(/Составителя/g, 'Сompiler')
        .replace(/Показатель/g, 'indicator')
        .replace(/КБК/g, 'KBK')
        .replace(/ОКАТО/g, 'OKATO')
        .replace(/Основания/g, 'Foundations')
        .replace(/Периода/g, 'Period')
        .replace(/Даты/g, 'Date')
        .replace(/Типа/g, 'Type')
        .replace(/КонецФайла/g, '')
        .replace(/:'Платежное поручение',/g, '')
        .replace(/:'Банковский ордер',/g, '')
        .replace(/:'Платежный ордер',/g, '')
        .replace(/{',/g, '{')
        .replace(/}',/g, '}')
        .replace(/[^\S]',/g, '')
        console.log(str1);
      } 
    }
    fileReader.readAsText(file);
  }
}

После выполнения кода, текст принимает формат:

введите сюда описание изображения

Как видите, каждый объект имеет одну и ту же переменную. Могу ли я как то добавить Уникальный ID для каждой новой переменной? Пробовал через цикл, но цикл уходил в бесконечность, Возможно что то не так написал в коде. Буду благодарен даже за совет , куда стоит копать. Спасибо!


Ответы (1 шт):

Автор решения: Виталий Шебаниц

Фунция replace может принимать фунцию str.replace(regexp|substr, newSubStr|function[, flags])

У функции есть такие аргументы:

function replacer(match, p1, p2, p3, offset, string) {
  // match - найденное
  // p1 - группа 1, p2 - группа 2, p3 - группа 3 ...
  return [p1, p2, p3].join(' - ');
}

let a = 'a a a a';
let count = 0;
a = a.replace(/a/gi, function(t){
  const res = `object${count}`;
  count++;
  return res;
});

console.log(a)

→ Ссылка