Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2012, 17:36   #1
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
По умолчанию TRegExpr: замена несколько раз в строке разными значениями, как?

Всем привет!
Собственно сабж в теме.

Есть строка вида: "[ааа] [ббб] [ввв] [ггг] [ааа] [еее]", таких строк несколько.

Нужно заменить все вхождения "[ааа]" в строке на какие-либо разные значения, например рандомные цифры.

Делаю так:

Код:
    regexp.InputString:=List[i];
    regexp.Expression:='\[ааа\]';
    if RegExp.Exec then
      repeat
        List[i]:=AnsiReplaceStr(List[i],RegExp.Match[0],inttostr(random(100)));
      until not RegExp.ExecNext;
    end;
но в таком случае все вхождения "[ааа]" в строке заменяются на одно и тоже значение, а нужно на разные.

Помогите!
trafbite вне форума Ответить с цитированием
Старый 22.06.2012, 18:58   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

толку тут от регулярки?
тут сам компиль PosEx прописал.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.06.2012, 19:24   #3
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
толку тут от регулярки?
тут сам компиль PosEx прописал.
Дай пример, пожалуйста
trafbite вне форума Ответить с цитированием
Старый 22.06.2012, 19:49   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а даже еще легче:
Код:
while Pos('[aaa]',s)>0 do
 s:=ReplaceString(s,'[aaa]',IntToStr(random(100)),[]);
как то так.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.06.2012, 21:29   #5
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
По умолчанию

Спасибо, а что значит последнее "[]"?
trafbite вне форума Ответить с цитированием
Старый 22.06.2012, 21:33   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

пустое множество.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проголосовать несколько раз? RECstart Свободное общение 13 18.05.2017 21:42
Как запустить приложение несколько раз? Trip Помощь студентам 2 04.09.2011 18:28
создание массива real рандомно с 2-мя разными значениями после запятой dima-intro Помощь студентам 6 15.12.2010 20:15
Как скопировать диапазон несколько раз? Алексей11111 Microsoft Office Excel 9 19.11.2009 10:13
Как зарегистрировать несколько раз в реестре Volkogriz Общие вопросы Delphi 5 14.01.2009 16:42