Je souhaite diviser certains textes en utilisant JavaScript. Le texte ressemble à:
9:30 pm The user did action A. 10:30 pm Welcome, user John Doe. 11:30 am Messaged user John Doe
Maintenant, je veux diviser la chaîne en événements. c'est à dire:
9:30 pm The user did action A.
Serait un événement. J'utilise RegEx pour ceci:
var split = journals.split(/\d*\d:/);
La chose est, les deux premiers caractères se perdent. La division apparaît comme ceci:
30 pm The user did action A.
Comment puis-je me séparer de sorte que la division maintienne les deux premiers caractères (c.-à-d. 9: ou 10 :), etc.?
Merci!
Utilisez un lookahead:
var split = journals.split(/(?=\b\d+:)/);
Ne serait-il pas plus facile de diviser sur la nouvelle ligne?
var split = journals.split(/\n\n/);
MODIFIER
Essayez de normaliser la chaîne dans un format que vous pouvez utiliser:
/* Non-normalized string */ var str = "9:30 pm\nThe user did action A.10:30 pm\nWelcome, user John Doe.\n\n\n11:30 am\nMessaged user John Doe\n12:30 pm\nThe user did something else."; /* Normalizing into a specific format. TIMESTAMP\nDESCRIPTION\n\n. Then removing extraneous leading \n\n */ str = str.replace(/\n*([0-9]{1,2}:[0-9]{2} (a|p)m)\n*/g, "\n\n$1\n").replace(/^\n+/, ""); var events = str.split(/\n\n/); /* The following should display an array of strings of the form: TIMESTAMP\nDESCRIPTION */ console.log(events); /* Loop through events and split on single newline to get timestamp and description */ for(var i = 0; i < events.length; i++) { var event = events[i]; var eventData = event.split(/\n/); var time = eventData[0]; var description = eventData[1]; console.log(time, description); }