Проблема извлечения и группировки даты регулярных выражений JavascriptJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Проблема извлечения и группировки даты регулярных выражений Javascript

Сообщение Гость »


У меня есть текстовые строки для этих строк

Il Messaggero Рим 22 сентября 2023 г. Il Messaggero Рим 21 сентября 2023 г. Иль Мессаггеро 22 сентября 2023 г. Иль Мессаггеро 21 сентября 2023 г. Il Messaggero Рим 21 августа 2023 г. Il Messaggero Рим 20 августа 2023 г. Великая слава рока – 15 февраля 2023 г. Corriere della Sera Sette 26 августа 2023 г. и я пытаюсь сгруппировать их вот так и с такими именами

Il Messaggero Rome [сентябрь 2023 г.] Il Messaggero Рим [август 2023 г.] Иль Мессаггеро [август 2023 г.] Великая слава рока - [февраль 2023 г.] Corriere della Sera Sette [август 2023 г.] Вместо этого строки неправильно сгруппированы с неправильными включениями и названиями

сентябрь [сентябрь] Август [Август] февраль [февраль] "Corriere della Sera Sette, 25 августа 2023 г.", а также "Il Messaggero" ошибочно включены

сентябрь [сентябрь] Август [Август] но их следует рассматривать как отдельные элементы. На этом рисунке показана неправильная группировка:


Изображение


Я попробовал использовать этот код

Функция для группировки текстов, например Il Messaggero, 21 сентября 2023 г. или Великая слава рока – 15 февраля 2023 г.

function groupByDate(date) { вар groupedData = {}; data.forEach(функция(элемент) { var date = item.id.match(/\d{1,2}\s(?:январь|февраль|март|апрель|май|июнь|июль|август|сентябрь|октябрь|ноябрь|декабрь)\s\d {4}/я); если (дата) { дата = дата[0].toLowerCase(); если (!groupedData[дата]) { groupedData[дата] = []; } groupedData[дата].push(элемент); } еще { если (!groupedData['другое']) { groupedData['другое'] = []; } groupedData['другое'].push(элемент); } }); вернуть сгруппированные данные; } Регулярное выражение для поиска

function ExtractGroup(text) { var containsNxM = /\d+x\d+/.test(text); var containsDate = /\d{1,2}\s(?:январь|февраль|март|апрель|май|июнь|июль|август|сентябрь|октябрь|ноябрь|декабрь)\s\d{4}/i. тест (текст); если (содержитNxM) { var match = text.match(/^([a-zA-Z\s]+\s\d+x)/); ответный матч? совпадение[0]: ''; } еще если (содержитДата) { var match = text.match(/\d{1,2}\s([a-zA-Z]+)\s\d{4}/i); ответный матч? совпадение[1]: ''; } еще { вернуть текст; } } Инициализация таблицы

function InitializeDataTable(data) { если (таблица данных) { dataTable.destroy(); } вар tableData = []; если (сгруппировано) { вар groupedData = {}; data.forEach(функция(элемент) { вар имя_группы = ExtractGroup(item.id); если (!groupedData[имягруппы]) { groupedData[имягруппы] = []; } groupedData[имя группы].push(элемент); }); // Вставляем журнал для проверки groupedData console.log("groupedData:", groupedData); for (var groupName в groupedData) { если (groupedData.hasOwnProperty(groupName)) { вар groupItems = groupedData[groupName]; вар tagText = groupItems[0].badge; var tagClass = 'badge-' + (badgeText || '').toLowerCase(); var commonText = groupName.split('[')[0].trim(); // Извлекаем общую часть из имени tableData.push({ "checkbox": '', "id": '' + tagText + ' ' + commonText + ' [' + groupName + ']', // Изменить здесь "имя пользователя": groupItems.map(function(item) { вернуть элемент.имя пользователя; }).join('
'), "extra": 'Загрузить', «showLinks»: groupItems.length > 2 }); } } Полный код инициализации таблицы находится ЗДЕСЬ, но я думаю, что для этой цели он бесполезен
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»