Как разбить строку с тегами по разделителю?

120
30 ноября 2020, 04:20

На сайте вопросов и ответов есть поле для ввода тегов, например

Теги:

игры, gta, скачать, торрент

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

var tags = [
    [игры, 0, 4],
    [gta, 6, 3],
    [скачать, 12, 7],
    [торрент, 21, 7]
]

Как это сделать более красиво?

Answer 1

// Наша исходная строка 
// Сразу проходимся по тэгах 
var str = 'игры, gta V, gta, игр'; 
var tags = str.split(/,\s/).map(function(e) { 
  // Берём регулярку для поиска слова 
  // Сразу возвращаем каждый тэг с его характеристиками 
  // Для позиции использую поз + 1, т.к. ищем слово с пробелом в начале 
  var re = new RegExp('(\\s+|^)' + e + '(,|$)'); 
  return [e, str.search(re) + (str.search(re) == 0 ? 0 : 1), e.length]; 
}); 
 
console.log(tags);

P.S. Модификация скрипта зависит от изначальной строки: игры, gta V, gta, игр, либо если будет игры, gta V, gta, игр, то поиск и деление на отдельные тэги придется немного изменить.

READ ALSO
Проблема с webpack`ом

Проблема с webpack`ом

Есть файлы: indexhtml Папка script, в которой находятся: index

100
Не могу нормально передать в функцию параметр

Не могу нормально передать в функцию параметр

Не могу понять в чем проблемапри выводе в консоли console

119
Выделить по клику число в месяце

Выделить по клику число в месяце

Прошу подсказать, как по клику выделить определенную дату и как эту выбранную дату связать с файлом Базы Данных для последующего выбора информации...

101
Gulp 4.0.1. Модуль 'del' не найден

Gulp 4.0.1. Модуль 'del' не найден

Столкнулся с проблемой: при сборке проекта в Gulp версии 40

103