Как преобразовать txt файл загруженный через input в объекты с которыми можно работать? JavaScript
Есть txt файл, который загружается через инпут, сам txt вывожу в консоль через fileReader

var res = Object.create(null)
i.replace(/^([^=]*)(=)(.*)$/gm, (m:any, k:any, e:any, v:any) => {res[k] = e ? v : null})
const textJSON = JSON.stringify(res, null, 2)
Пытался реализовать через такой подход, но в итоге максимум чего достиг что каждая строка помещалась в отдельный объект в виде {"ПолучательИНН":"63748576163"}, но никак не мог структурировать данные и распределить по отдельным объектам, как вы можете увидеть на скрине, документ состоит в основном из начала - "СекцияДокумент" и конец- "КонецДокумента" и задача состоит в чтобы такие данные как на скрине , объединить в один массив с ключами, ключ до знака = ( "=" как вы понимаете надо заменить на ":"), значение после либо пустое либо какое то есть, ключи можно сделать на английском при помощи .replace(), но как объединить данные из документа в один массив\объект я понять не могу.все эти изменения нужный чтобы готовый массив\объект отправить в бд. Помогите если был подобный опыт работы с TXT или подскажите куда копать. Спасибо.
Ответы (1 шт):
Вариант в лоб, если .txt будет содержать текст по типу этого:
asdasd=123123
Тест=ОАО "ОФЫВО"
123123=asdasd
ПустаяСтрока=
Не Правильный Ключ!"*№!"=фывфыв
= фывфывфы
КонецДокумента
То скрипт вернёт объёкт
{
"123123": "asdasd",
"asdasd": "123123",
"Тест": "ОАО \"ОФЫВО\"",
"ПустаяСтрока": "",
"Не Правильный Ключ!\"*№!\"": "фывфыв"
}
const input = document.querySelector('#input');
input.addEventListener('change', function(e) {
const file = input.files[0];
if(file.type === 'text/plain') {
const reader = new FileReader();
reader.readAsText(file);
reader.onload = function() {
console.info(TextToObject(reader.result));
}
}
});
function TextToObject(text) {
const output = {};
text = text.split(/\n|\r/gm);
text.map(function(e) {
if(e.length > 0 && /.*[^\s]=.*/g.test(e)) {
let str = e.split('=');
output[str[0]] = str[1];
}
});
return output;
}
<input type="file" id="input">