procedure ReplaceText(Edit: TCustomEdit; strOLD, strNEW: string);
var
x, Position: integer;
tmpstr, tmpstr2: string;
begin
tmpstr := Edit.Text;
for x := 0 to Length(Edit.Text) dobeginif Copy(Edit.Text, x, Length(strold)) = strold thenbegin
tmpstr := Copy(Edit.Text, 0, x - 1) + strnew;
Position := x;
end;
end;
tmpstr2 := Edit.Text;
if Position <> 0 then
Edit.Text := tmpstr + Copy(tmpstr2, Position + Length(strOLD), Length(tmpstr2))
else
Edit.Text := tmpstr;
end;
// Example/Beispiel: procedure TForm1.Button1Click(Sender: TObject);
begin
ReplaceText(Edit1, 'OldWord', 'NewWord');
end;
// With the StringReplace function: procedure ReplaceText(Edit: TCustomEdit; strOLD, strNEW: string);
begin
Edit.Text := StringReplace(Edit1.Text, strOLD, strNEW, [rfReplaceAll]);
end;
Программный код, представленный ниже, является процедурой для замены текста в компоненте TEdit в Delphi. Есть две версии этой процедуры: одна, которая использует цикл для ручного поиска и замены старого текста на новый, а другая - которая использует встроенную функцию StringReplace.
Версия 1 (ручной замен)
Ручная версия реализована с помощью цикла for, который проходит через каждый символ текста компонента TEdit. Она проверяет, если текущая позиция совпадает с длиной старого текста для замены, и если да, то она заменяет его на новый текст.
Вот шаг за шагом:
Инициализируйте пустую строку tmpstr значением текста компонента TEdit.
Проходите через каждый символ текста с помощью цикла for, начиная с позиции 0 и заканчивая длиной текста.
Для каждой итерации проверьте, если подстрока текста, начинающаяся с текущей позиции, имеет ту же длину, что и старый текст для замены (используя функцию Copy).
Если подстрока совпадает с старым текстом, замените его на новый текст, конкатенируя символы до matches (tmpstr) с новым текстом.
Сохраните новый текст в переменной Position.
После завершения цикла проверьте, если Position не равно 0 (т.е., старый текст был найден и заменен). Если да, то конкатенируйте оригинальный текст до замены с частью текста после замены с помощью функции Copy.
Присвойте полученный результат строке обратно компоненту TEdit.
Версия 2 (используя StringReplace)
Вторая версия использует встроенную функцию StringReplace, которая является более эффективной и прямой способ замены текста в строке. Вот как она работает:
Позвоните функции StringReplace с следующими параметрами:
Оригинальный текст компонента TEdit (Edit1.Text)
Старый текст для замены (strOLD)
Новый текст для замены (strNEW)
Массив флагов, в этом случае [rfReplaceAll], который указывает на то, что все вхождения должны быть заменены
Функция StringReplace возвращает новую строку с примененными заменами. Это результат присваивается обратно тексту компонента TEdit.
Пример
В примере кода, предоставленном ниже, процедура Button1Click вызывает процедуру ReplaceText с аргументами Edit1, 'OldWord' и 'NewWord'. Это заменит все вхождения 'OldWord' в Edit1 на 'NewWord'.
Альтернативное решение
Вместо ручного прохода через текст, можно использовать регулярные выражения для упрощения процесса замены. Delphi предоставляет компонент TRegExpr, который позволяет работать с регулярными выражениями.
Например, вы можете создать объект TRegExpr и использовать его метод ReplaceAll для замены всех вхождений старого текста на новый текст:
Эта подход более компактен и легче поддерживать, чем ручной цикл-ориентированный решение.
В статье описывается процедура замены текста в поле TEdit Delphi, которая позволяет заменять заданный текст на другой, а также ее использование с примерами кода.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.