170 похожих чатов

Здравствуйте, что можете посоветовать в моём случае? Мне нужно обрабатывать строку

и получать с неё определённые элементы
вот пример: key.key2[23][1]
мне нужно получать числа 23 и 1, причём именно в [ ]
Я попробовал регулярные выражения и всё работает, но есть проблема
он медленно работает, около 10 миллисекунд на обработку одной строки
Для моих задач слишком медленно, может я что-то не так делаю..
Вот как я делал: key.match(/(?<=\[).*?(?=\])/g)

5 ответов

9 просмотров

Регулярка для вытаскивания всех цифр в квадратных скобках: /\[(\d+)\]/ может будет быстрее работать, чем .* и lookaroundы. А так вообще самое быстрое решение — за линейное время пройти посимвольно по строке, встретили [ — встретили потенциальное число, встретили ] — оно закончилось

Жора-Змейкин Автор вопроса

> А так вообще самое быстрое решение — за линейное время Циклом?

Да типа такого: let isInsideBrackets = false; let current = ‘’; let results = []; for (let i = 0; i < str.length; i++) { if (str[i] === ‘[‘) { isInsideBrackets = true; } else if (str[i] === ‘]’) { if (isInsideBrackets) { results.push(current); } current = ‘’; isInsideBrackets = false; } else if (isInsideBrackets) { if (str.charCodeAt(i) >= ‘0’.charCodeAt(0) && str.charCodeAt(i) <= ‘9’.charCodeAt(0)) { current += str[i]; } else { isInsideBrackets = false; } } }

Жора-Змейкин Автор вопроса

ого...спасибо большое, изучу

Жора-Змейкин Автор вопроса

спасибо огромное, алгоритм шикарно работает и очень быстрый

Похожие вопросы

Обсуждают сегодня

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
9
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
6
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
14
Карта сайта