Замена слова на слова с нумерацией

База такого типа:

Text 01.02 Text 03.01
Text 01.02 Text 03.01
Text 01.02 Text 03.01

Нужно заменить слово Text на: Text1, Text2, Text3 и так далее. И на выходе результат:

База такого типа:

Text1 01.02 Text2 03.01
Text3 01.02 Text4 03.01
Text5 01.02 Text6 03.01

Делал вот так но не срабатывает.

s  := StringReplace(s, 'Text',  'Text' + IntToStr(i), [rfReplaceAll, rfIgnoreCase]);

Ответы (1 шт):

Автор решения: zed

Вот так должно сработать:

s  := StringReplace(s, 'Text ',  'Text' + IntToStr(i) + ' ', [rfIgnoreCase]);
  • добавил в шаблоне пробел;
  • удалил замену всех вхождений;
  • добавил пробел в замене.

Пример использования:

procedure DoTest;
var
  i: Integer;
  s1, s2: string;
begin
  s1 :=
    'Text 01.02 Text 03.01' + #13#10 +
    'Text 01.02 Text 03.01' + #13#10 +
    'Text 01.02 Text 03.01';

  i := 1;
  repeat
    s2 := StringReplace(s1, 'Text ',  'Text' + IntToStr(i) + ' ', [rfIgnoreCase]);

    if s1 <> s2 then begin
      s1 := s2;
      Inc(i);
    end else begin
      Break;
    end;

  until False;

  Writeln(s2);
end;
→ Ссылка