Quiero analizar los mensajes de texto contenidos en una cadena de plantilla para el siguiente objeto JS. Cada mensaje de texto está separado por una nueva línea y después del nombre del autor hay dos puntos. El contenido del mensaje también puede incluir nuevas líneas, corchetes y dos puntos. ¿Cuál es tu forma preferida de resolver esto?
let string = `[03.12.21, 16:12:52] John Doe: Two questions: How are you? And is lunch at 7 fine? [03.12.21, 16:14:30] Jane Doe: Im fine. 7 sounds good.`; let data = { "03.12.21, 16:12:52": { "author": "John Doe", "content": "Two questions:\nHow are you? And is lunch at 7 fine?" }, "03.12.21, 16:14:30": { "author": "John Doe", "content": "Im fine. 7 sounds good." }, }; // will be parseString() function parseString() { // ? }¿como esto?
let string = `[03.12.21, 16:12:52] John Doe: Two questions: How are you? And is lunch at 7 fine? [03.12.21, 16:14:30] Jane Doe: Im fine. 7 sounds good.`; let chunks = string.split(/^\[(\d\d\.\d\d\.\d\d, \d\d\:\d\d\:\d\d)\](.*?):/m); let data = {}; for (let i = 3; i < chunks.length; i += 3) { const date = chunks[i - 2]; const author = chunks[i - 1].trim(); const content = chunks[i].trim(); data[date] = { author, content, }; } console.log(data); .as-console-wrapper{top:0;max-height:100%!important}¿Algo como esto?
function parseMessage(message) { var messageObj = {}; var messageArray = message.split(" "); messageObj.command = messageArray[0]; messageObj.args = messageArray.slice(1); return messageObj; }Dividiría toda la cadena en pequeños pedazos como: let string = fecha + autor + contenido. Con eso es mucho más simple. O usa algo como string.split()