JavaScript Split без потери персонажа - PullRequest
0 голосов
/ 15 июня 2010

Я хочу разделить определенный текст с помощью JavaScript. Текст выглядит так:

9:30 pm
The user did action A.

10:30 pm
Welcome, user John Doe.

11:30 am
Messaged user John Doe

Теперь я хочу разбить строку на события. i.e.:

9:30 pm
The user did action A.

будет одним событием. Для этого я использую RegEx:

var split = journals.split(/\d*\d:/);

Дело в том, что первые два символа теряются. Раскол выглядит так:

30 pm
    The user did action A.

Как разделить так, чтобы разделение поддерживало первые два / три символа (например, 9: или 10: ) и т. Д.

Спасибо!

Ответы [ 2 ]

6 голосов
/ 15 июня 2010

Используйте взгляд:

var split = journals.split(/(?=\b\d+:)/);
2 голосов
/ 15 июня 2010

Не проще ли разбить на новую строку?

var split = journals.split(/\n\n/);

РЕДАКТИРОВАТЬ

Попробуйте преобразовать строку в формат, который вы можете использовать:1008 *

/*
 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...