Как разбить строку, начинающуюся с начала регулярного выражения в javascript - PullRequest
1 голос
/ 28 января 2020

У меня есть некоторые данные в строке, например,

const rawData = `1   Jon Doe 3434 535 3 3 353 HI 3535
2    Jane Smith 23 5235 5 5 2352 HELLO 3543
3      Some Guy 4534 35 5345 4 5345 MEOW 4354`

Я хочу использовать метод .split () для создания каждой строки (от номера заказа до конца последнего значения) его собственное значение в массиве.

Я пытался

rawData.split(/([0-9]+\s+[A-Z][a-z])/g);

, регулярное выражение находит число, за которым следует пробел, затем заглавная буква и строчная буква (номер заказа до начала от имени)

это возвращает

["", "1 Jo", "n Doe 3434 535 3 3 353 HI 3535", "2 Ja", "ne Smith 23 5235 5 5 2352 HELLO 3543", "3 So", "me Guy 4534 35 5345 4 5345 MEOW 4354"]

Я хотел бы иметь 3 значения, разделив строку в начале регулярного выражения. Итак, я хотел бы закончить с:

["1 Jon Doe 3434 535 3 3 353 HI 3535", "2 Jane Smith 23 5235 5 5 2352 HELLO 3543", "3 Some Guy 4534 35 5345 4 5345 MEOW 4354"]

Я могу подумать об обходном пути, используя для l oop для объединения значений в массив после. Мне любопытно, если есть способ сделать это в одной строке. Спасибо!

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

Я только что узнал о предвидении в регулярных выражениях, это работает:

rawData.split(/\s(?=\d+\s+[A-Z][a-z])/g);

1 Ответ

2 голосов
/ 28 января 2020

Почему бы не разделить на новую строку?

const rawData = `1   Jon Doe 3434 535 3 3 353 HI 3535
2    Jane Smith 23 5235 5 5 2352 HELLO 3543
3      Some Guy 4534 35 5345 4 5345 MEOW 4354`,
    result = rawData.split(/\n/);

console.log(result);
...