Когда у вас есть группа захвата ((...)
) в регулярном выражении, которое вы передаете .split
, захваченный текст возвращается как часть результата. Вот почему у вас есть "1"
, "2"
и т. Д. Между "Item "
.
Помимо некоторого варианта @ решения Ори Дори , вы также можете решить это с помощью прогнозного утверждения (?=...)
, которое является не захватывающей конструкцией.
var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = string.split(/(?=Item)/);
console.log(arr);
Это будет работать, разбивая строку непосредственно перед любым появлением текста "Item"
.
Для более грубого решения без использования регулярных выражений:
var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = [];
var i = string.indexOf('Item', 1);
while (i >= 0) {
arr.push(string.substr(0, i));
string = string.substr(i);
i = string.indexOf('Item', 1);
}
arr.push(string);
console.log(arr);