Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541

Удалить подстроки в цикле по условию

19.05.2024, 22:48. Показов 905. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Нужно удалить подстроки в цикле по условию
Например, если в определенном месте подстроки 'od', год меньше чем 2024, тогда удалить подстроку.
Сделал так, нужные подстроки удаляются:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function delOldDate(){
    ces = "[01,05,2024] {текст3};[03,05,2023] {текст1};[05,05,2022] {текст2};";
    for (var x = 0; x < ces.length; x++){
        var start_od = ces.indexOf("[");
        var end_od = ces.indexOf(";", start_od);
        var od = ces.substring(start_od, end_od) + ";";
        var oldYear = od.slice(7, 11);
            
        if(oldYear < '2024'){
            ces = ces.replace(od, "");
        }
    }
}
Но если строку изменить и первым вхождением будет 2024, тогда цикл останавливается:
JavaScript
1
ces = "[01,05,2024] {текст3};[03,05,2023] {текст1};[05,05,2022] {текст2};";
Пожалуйста, помогите. Кроссбраузерность важна!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2024, 22:48
Ответы с готовыми решениями:

Удаление подстроки по условию
Здравствуйте, просьба помочь решить задачку. Есть справочник Номенклатуры, в котором к Артикулу может быть добавлен Префикс (сокращенное...

Вывод подстроки, удовлетворяющей условию
Доброго времени суток! Нужна помощь в решении следующей задачи: Задать текст, состоящий из букв, цифр, запятых, знаков + и -. В...

Деление строки на подстроки по условию
Добрый день помогите реализовать такую проблему: Есть в массив данных q = &quot;191186, Малая Конюшенная ул., 1/3, оф. В-21&quot;; ...

7
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
19.05.2024, 23:08
Цитата Сообщение от sashgera Посмотреть сообщение
var start_od = ces.indexOf("[");
В этой строке indexOf всегда будет искать с нулевого индекса, нужен второй параметр - с какого индекса начинать поиск.
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
19.05.2024, 23:14  [ТС]
Цитата Сообщение от Tanya2007 Посмотреть сообщение
В этой строке indexOf всегда будет искать с нулевого индекса, нужен второй параметр - с какого индекса начинать поиск.
Tanya2007, начинать нужно с начала, с нулевого индекса, а здесь второй параметр указан
JavaScript
1
var end_od = ces.indexOf(";", start_od);
0
176 / 74 / 27
Регистрация: 10.11.2023
Сообщений: 199
19.05.2024, 23:53
Так?
JavaScript
1
2
3
4
5
6
7
    const ces = "[01,05,2024] {текст3};[03,05,2023] {текст1};[05,05,2022] {текст2};";
 
    const newStr = ces.split(';')
                        .filter(el=>el && +el.match(/\d{4}/)< 2024 )
                        .map((i) => `${i};`)
                        .join('')
    console.log(newStr)  // [03,05,2023] {текст1};[05,05,2022] {текст2};
1
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
19.05.2024, 23:54
Цитата Сообщение от sashgera Посмотреть сообщение
начинать нужно с начала, с нулевого индекса
В таком случае, когда 2024 у вас первый, start_od всегда будет 0, на какой бы позиции х вы не находились.

Попробуйте так, но регулярка так себе. Надо еще подумать. Она удалит все записи, кроме 2024 года, даже если год будет больше чем 2024.

JavaScript
1
2
3
4
function delOldDate(){
            ces = "[01,05,2024] {текст3};[03,05,2023] {текст1};[05,05,2022] {текст2};[01,05,2055] {текст3};";
            ces = ces.replace(/\[[0-9]{2},[0-9]{2},[0-35-9]{4}.+?;/g, "");
        }
0
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.05.2024, 01:40  [ТС]
Цитата Сообщение от ZeroKara Посмотреть сообщение
Так?
ZeroKara, не, наоборот, это удалить:
// [03,05,2023] {текст1};[05,05,2022] {текст2};
а это оставить:
[01,05,2024] {текст3};
Цитата Сообщение от sashgera Посмотреть сообщение
Кроссбраузерность важна!
мне нужно для старого IE, там filter не работает

Добавлено через 11 минут
Tanya2007, да, регулярка сыровата, но за ответ спасибо!

Добавлено через 1 час 23 минуты
Цитата Сообщение от Tanya2007 Посмотреть сообщение
В этой строке indexOf всегда будет искать с нулевого индекса, нужен второй параметр
Tanya2007, да, все верно, сделал так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function delOldDate(){
    ces = "[01,05,2024] {текст3};[03,05,2023] {текст1};[05,05,2022] {текст2};[04,05,2024] {текст4};[22,05,2020] {текст5};[22,05,2029] {текст7};";
    var index = 0;
    for (var x = 0; x < ces.length; x++){
        var start_od = ces.indexOf("[", index);
        var end_od = ces.indexOf(";", start_od);
        var od = ces.substring(start_od, end_od) + ";";
        var oldYear = od.slice(7, 11);
            
        if(oldYear < '2024'){
            ces = ces.replace(od, "");
        }else{
            index = end_od;
        }
    }
}
0
176 / 74 / 27
Регистрация: 10.11.2023
Сообщений: 199
20.05.2024, 11:05
еще предложу, мог что-то не учесть
JavaScript
1
2
3
4
5
6
7
var ces = "[01,05,2024] {текст3};[03,05,2023] {текст1};[05,05,2022] {текст2};[04,05,2024] {текст4};[22,05,2020] {текст5};[22,05,2029] {текст7};";
 
ces =ces.replace(/\[\d{2},\d{2},(\d{4})\]\s*\{[^{}]*\};/g, 
    function(match, year) {
         return +year>=2024 ? match:''
    });
console.log(ces); // [01,05,2024] {текст3};[04,05,2024] {текст4};[22,05,2029] {текст7};
2
6 / 6 / 5
Регистрация: 19.09.2011
Сообщений: 541
20.05.2024, 14:56  [ТС]
ZeroKara, все работает, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2024, 14:56
Помогаю со студенческими работами здесь

Поиск подстроки в строке по заданному условию (C++)
помогите мне с этой задачей: Поиск подстроки в строке по заданному условию

Удалить слова, начинающиеся с заданной подстроки, а слова без заданной подстроки, упорядочить по возрастанию
С консоли осуществляется ввод массива строк. Удалить все слова, начинающиеся с заданной подстроки. Все строки, не содержащие заданной...

Разбор тегов в цикле по условию
Добрый день форумчане, помогите справится с задачей. Есть цикл: private void webBrowser1_DocumentCompleted(object sender,...

Перемещение ячеек по условию в цикле
Есть прайс-лист(см. приложение). В столбцах B,C,D находятся категории товара: старшая, средняя и младшая соответственно. В прайс-листе от...

Пропуск в цикле по условию пустой ячейки
Доброго дня. Есть книга, у которой 22 первых листа имеют одинаковую таблицу, с разными данными. Хочу перенести данные по 22 листам в один...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru