разбить строку с несколькими разделителями только один раз - PullRequest
1 голос
/ 12 февраля 2020

Я хочу разбить строку с разными разделителями. А также только один раз ... Кажется, я не понимаю :-(. Например:

test/date-2020-02-10Xinfo

то, что я хочу, это как массив:

[test,Date,2020-02-10,info]

I пробовал несколько вещей, например:

this.informations = this.info.map(i => i.split(/(?:\/|-|X)+/));

Что я получаю, это [test, Date, 2020,02,10, info]

1 Ответ

1 голос
/ 14 февраля 2020

Вы можете использовать объявление регулярного выражения, например

/^([^\/]+)\/([^-]+)-(\d{4}-\d{2}-\d{2})X(.*)/

См. Демонстрационный пример регулярного выражения .

Подробности :

  • ^ - начало строки
  • ([^\/]+) - Группа 1: один или несколько символов, отличных от /
  • \/ - / char
  • ([^-]+) - Группа 2: один или несколько символов, отличных от -
  • - - - char
  • (\d{4}-\d{2}-\d{2}) - Группа 3: четыре цифры, -, две цифры, -, две цифры
  • X - X char
  • (.*) - Группа 4: остальная часть строки.

Используйте это как

this.info.map(i => i.match(regex).slice(1));

.slice(1) удалит первый элемент из массива результатов String#match(RegExp) возвращает, то есть все значение соответствия (так как вам нужны только захваченные подстроки).

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