Javascript: расщепление времени и информации - PullRequest
4 голосов
/ 10 декабря 2010

С сервера я получаю данные как таковые:

"07.00 PROGRAM DESCRIPTION"
"07.20 PROGRAM DESCRIPTION 2"

Я хочу разделить их на 2 индексированных массива, таких как: ["07.00", "PROGRAM DESCRIPTION 2"]. Обычное разбиение ("") не сработает, так как часть описания содержит несколько "" пробелов.

Буду благодарен за любое предложение.

Привет

Ответы [ 4 ]

2 голосов
/ 10 декабря 2010

Вы можете использовать:

var parts = str.split(' '),
    time = parts.shift(),
    description = parts.join(' ');

или, чтобы получить ваш массив:

var parts = str.split(' ');
parts[1] = parts.slice(1).join(' ');

;)

2 голосов
/ 10 декабря 2010

Вам нужен какой-то шаблон, который является надежным. Если это всегда тот случай, когда вам нужно разделить только первый пробельный символ, который вы можете сделать:

var blub = "07.00 PROGRAM DESCRIPTION",
    pos  = blub.indexOf(" "),
    arr  = [];

arr[0] = blub.slice(0, pos);
arr[1] = blub.slice(pos + 1);

или вы можете просто захотеть использовать регулярное выражение. Поскольку я не претендую на то, чтобы быть гением в этой области, вот мое маленькое предложение:

var blub = "07.00 PROGRAM DESCRIPTION",
    arr  = /(\d+\.\d+)\s(.*)/.exec(blub);
1 голос
/ 10 декабря 2010
var pattern = /([0-9]{2}\.[0-9]{2})\s(.+)/;
var data = "07.00 PROGRAM DESCRIPTION";
var parsed = pattern.exec(data);

console.log(parsed); // (Array) ["07.00 PROGRAM DESCRIPTION", "07.00", "PROGRAM DESCRIPTION"]

это гибкий и простой способ адаптации в случае изменения формата (просто измените шаблон и используйте его в любом месте вашего кода)

0 голосов
/ 10 декабря 2010

Метод подстроки:

var time = row.substring(0,4);
var description = row.substring(5);

Или, методом разделения:

row = row.split(" ",1);

Второй параметр - это максимальное количество разбиений ... поэтому он будет разбиваться только на первом месте. Редактировать: это не будет работать. Вместо этого используйте первый метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...