Разбейте строку на массив, но при применении объединения сохраняйте запятую.- JavaScript - PullRequest
0 голосов
/ 30 января 2019

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

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

> Input: "Welcome, <p>how<b>are you</p>do-ing</b>?"
> Output: ["Welcome,", " ", "<p>", "how", "<b>", "are you", "</b>", "</p>", "do-ing", "</b>", "?"]

Что я пробовал:

var str = "Welcome, <p>how<b>are you</p>doing</b>?",
    arr = str.split(/([,\s])/);

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

1 Ответ

0 голосов
/ 30 января 2019

Используйте .match вместо .split:

var str = "Welcome, <p>how<b>are you</p>doing</b>?",
    arr = str.match(/<[^>]+>|[^,<]+,?/g);
console.log(arr);

Шаблон <[^>]+>|[^,<]+,? означает:

Чередование между

  • <[^>]+> - совпадение <, за которым в конечном итоге следуетa > или
  • [^,<]+,? - Совпадает с символами, отличными от , и <, за которыми необязательно следует ,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...