| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Регулярные выражения в цикле |
| Автор: Suppir 11.3.2012, 13:12 | ||
1. Мне нужно использовать несколько регулярных выражений при переборе массива. Но код работает слишком медленно (на Perl быстрей в несколько раз). Что делаю не так?
2. Как вернуть 1, если первым символом строки gar[x] является знак "(" ? |
| Автор: Stolzen 11.3.2012, 13:17 |
| Массив большой? |
| Автор: Suppir 11.3.2012, 13:19 |
| 5000 элементов. Мне кажется, что проблема в использовании регулярных выражений внутри цикла. Но Perl обрабатывает моментально (на порядок быстрей). Как правильно объявлять такие регулярные выражения? Если то что "искать" объявлять вне цикла, а то, на что заменить - внутри, то код непонятным становится. |
| Автор: Stolzen 11.3.2012, 13:26 |
| 5000? Попробуйте StringBuilder для соединения строк |
| Автор: Suppir 11.3.2012, 13:32 |
| Т.е. проблема не в регулярных выражениях, а в соединении строк? И еще, обязательно ли использовать RegexOptions.Compiled или можно обойтись без него? |
| Автор: Suppir 11.3.2012, 13:35 |
| А по этому вопросу можете подсказать? Как вернуть "true", если первым символом строки gar[x] является знак "(" ? |
| Автор: Stolzen 11.3.2012, 13:41 | ||
|
| Автор: Suppir 11.3.2012, 13:41 |
| Спасибо! Добавлено через 4 минуты и 45 секунд А еще, можно без регулярных выражений узнать, что строка оканчивается на символ ">", после которого может быть, а может и не быть пробел? |
| Автор: Stolzen 11.3.2012, 14:01 | ||
|
| Автор: Suppir 11.3.2012, 14:03 | ||
| Еще один вопрос, пока вы не ушли! У меня приложение с GUI. После InitializeComponent() выполняются еще две функции. Но при запуске GUI отрисовывается только после того, как эти функции выполнятся. Мне же нужно, чтобы приложение сначала отрисовалось, а только потом эти функции запустились. Как это сделать?
|
| Автор: Stolzen 11.3.2012, 14:06 |
| В событие Load формы добавить это |
| Автор: Suppir 11.3.2012, 14:11 | ||
А где это нужно прописать?
То есть где нужно объявлять функции LoadFiles() и Prepare(), чтобы они выполнялись уже после того, как форма будет отображена? |
| Автор: Stolzen 11.3.2012, 14:14 |
| Не помню |
| Автор: Suppir 11.3.2012, 14:17 | ||
Нашел. Написал вот так, но все равно, сначала эти функции отрабатываются, а только потом форма отображается. А нужно, чтобы сначала запустилась программа, а потом начали функции отрабатывать.
|
| Автор: LOPUH 12.3.2012, 04:09 |
| Скорее всего, проблема в неправильно выбранном событии. СобытиеForm_Load происходит при загрузке формы, т.е. до ее прорисовки. Попробуйте выбрать другое событие, например Form_Shown |
| Автор: Suppir 12.3.2012, 09:45 |
| Спасибо, попробую. |