Добавить слово в строку после последней буквы

Есть строки вот такого вида

dsdddfffdfd:dsds1980
dsddd1fff11dfd:ds1ds1987
ds111ddfffdfd:dsdw12s1981

Нужно после последней буквы в каждой строке добавить слово Test. То есть результат должен быть:

dsdddfffdfd:dsds**Test**1980
dsddd1fff11dfd:ds1ds**Test**1987
ds111ddfffdfd:dsdw12s**Test**1981

Добавить в конце строки то понятно как: S:= S + 'Test';

Но вот как решить эту задачу то понятия нет.


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

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

задача для метода TRegEx.replace(). На вход получает строку текста, шаблон и строку замены.

result := TRegEx.replace(txt, '(\d+)$', '**test**\1');

в шаблоне $ - конец строки, () - группа захвата, ее извлекаем из строки. \d+ - одна и более цифр. Далее в строке замены можем обратиться (обратная ссылка) к группе захвата с номером 1 (в 0 - вся строка соответствия) через \1.

→ Ссылка
Автор решения: Mobyty

Вот код, который у меня работает:

Label1.Caption:='aaaaaaaa'+#13#10+'bbbbbbb'+#13#10+'cccccccc';
Label2.Caption:=StringReplace(Label1.Caption,#13#10,'Test'+#13#10,[rfReplaceAll,rfIgnoreCase])+'Test';  

Костыль, но работающий :)

При желании можна причесать, но хотел указать на два момента, с которыми вы имеете дело:

  1. Символ переноса в конце строки #13#10 (Enter).
  2. Функция StringReplace, которую я использовал для замены (можно и покрасивее сделать).
→ Ссылка