const { csv2json } = require('json-2-csv') const fs = require('fs') const { parse } = require('csv-parse') function reformatString(str) { const obj = {} const pemindahanRegex = /PEMINDAHAN KE\s+(\d+)\s+(.+?)\s*\|/ const pemindahanMatch = str.match(pemindahanRegex) if (pemindahanMatch) { obj.address = pemindahanMatch[1].trim() obj.addressName = pemindahanMatch[2].trim() } const notesRegex = /([a-zA-Z0-9]+)$/ const notesMatch = str.match(notesRegex) if (notesMatch) { obj.notes = notesMatch[0].trim() } return obj } let data = new Promise((resolve, reject) => { const readFile = fs.readFileSync('./bni2.csv') let pr = parse(readFile, { delimiter: ';' }) let csvString = '' pr.on('data', (chunk) => { csvString += '\n' + chunk.toString() }) pr.on('end', () => { resolve(csvString.trim()) }) }) data.then((data) => { data = data.replace(/(\d+),(\d+)\.(\d+)/g, '$1.$2.$3') const reformatCsvData = csv2json(data).map((v) => { let reformat = reformatString(v.Description) return { addressName: reformat.addressName, address: reformat.address, journalNo: v['Journal No.'], amount: v.Debit, notes: reformat.notes, date: v['Post Date'] } }) console.log(reformatCsvData) })const { csv2json } = require('json-2-csv') const fs = require('fs') const { parse } = require('csv-parse') function reformatString(str) { const obj = {} const pemindahanRegex = /PEMINDAHAN KE\s+(\d+)\s+(.+?)\s*\|/ const pemindahanMatch = str.match(pemindahanRegex) if (pemindahanMatch) { obj.address = pemindahanMatch[1].trim() obj.addressName = pemindahanMatch[2].trim() } const notesRegex = /([a-zA-Z0-9]+)$/ const notesMatch = str.match(notesRegex) if (notesMatch) { obj.notes = notesMatch[0].trim() } return obj } let data = new Promise((resolve, reject) => { let csvString = '' fs.createReadStream('./bni2.csv') .pipe(parse({ delimiter: ';' })) .on('data', (chunk) => { csvString += '\n' + chunk.toString() }) .on('end', () => { resolve(csvString.trim()) }) }) data.then((data) => { data = data.replace(/(\d+),(\d+)\.(\d+)/g, '$1.$2.$3') const reformatCsvData = csv2json(data).map((v) => { let reformat = reformatString(v.Description) return { addressName: reformat.addressName, address: reformat.address, journalNo: v['Journal No.'], amount: v.Debit, notes: reformat.notes, date: v['Post Date'] } }) console.log(reformatCsvData) })const { csv2json } = require('json-2-csv') const fs = require('fs') const { parse } = require('csv-parse') function reformatString(str) { const obj = {} const pemindahanRegex = /PEMINDAHAN KE\s+(\d+)\s+(.+?)\s*\|/ const pemindahanMatch = str.match(pemindahanRegex) if (pemindahanMatch) { obj.address = pemindahanMatch[1].trim() obj.addressName = pemindahanMatch[2].trim() } const notesRegex = /([a-zA-Z0-9]+)$/ const notesMatch = str.match(notesRegex) if (notesMatch) { obj.notes = notesMatch[0].trim() } return obj } let data = new Promise((resolve, reject) => { const readFile = fs.readFileSync('./bni2.csv') let pr = parse(readFile, { delimiter: ';' }) let csvString = '' pr.on('data', (chunk) => { csvString += '\n' + chunk.toString() }) pr.on('end', () => { resolve(csvString.trim()) }) }) data.then((data) => { data = data.replace(/(\b\d{1,3}(,\d{3})*\.\d{2}\b)/g, function (match) { return match.replace(/,/g, '.') }) const reformatCsvData = csv2json(data).map((v) => { let reformat = reformatString(v.Description) return { addressName: reformat.addressName, address: reformat.address, journalNo: v['Journal No.'], amount: v.Debit, notes: reformat.notes, date: v['Post Date'] } }) console.log(reformatCsvData) })