Добавить слово в строку после последней буквы
Есть строки вот такого вида
dsdddfffdfd:dsds1980
dsddd1fff11dfd:ds1ds1987
ds111ddfffdfd:dsdw12s1981
Нужно после последней буквы в каждой строке добавить слово Test. То есть результат должен быть:
dsdddfffdfd:dsds**Test**1980
dsddd1fff11dfd:ds1ds**Test**1987
ds111ddfffdfd:dsdw12s**Test**1981
Добавить в конце строки то понятно как: S:= S + 'Test';
Но вот как решить эту задачу то понятия нет.
Ответы (2 шт):
задача для метода TRegEx.replace(). На вход получает строку текста, шаблон и строку замены.
result := TRegEx.replace(txt, '(\d+)$', '**test**\1');
в шаблоне $ - конец строки, () - группа захвата, ее извлекаем из строки. \d+ - одна и более цифр. Далее в строке замены можем обратиться (обратная ссылка) к группе захвата с номером 1 (в 0 - вся строка соответствия) через \1.
Вот код, который у меня работает:
Label1.Caption:='aaaaaaaa'+#13#10+'bbbbbbb'+#13#10+'cccccccc';
Label2.Caption:=StringReplace(Label1.Caption,#13#10,'Test'+#13#10,[rfReplaceAll,rfIgnoreCase])+'Test';
Костыль, но работающий :)
При желании можна причесать, но хотел указать на два момента, с которыми вы имеете дело:
- Символ переноса в конце строки
#13#10(Enter). - Функция
StringReplace, которую я использовал для замены (можно и покрасивее сделать).