![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Форматирование строки с использованием подстановочных символовDelphi , Синтаксис , Текст и Строки
Автор: Dimka Maslov { **** UBPFD *********** by delphibase.endimus.com **** >> Форматирование строки с использованием подстановочных символов %1, %2 и т.д. Функция заменяет в строке Str все подстроки '%1', '%2', и т.д. На соответсвующие значения из массива Values. При этом значения этого массива не должны содержать подстановочных подстрок, в противном случае возможно зависание функции. Зависимости: SysUtils Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург Copyright: Dimka Maslov Дата: 15 мая 2002 г. ***************************************************** } {Эта функция работает неверно, если в строке, на которую надо заменить %1,%2,… содержится одна из строк %1,%2,… ( она зависнет в бесконечном цикле )} function FmtString(const Str: string; const Values: array of string): string; function InternalPos(SubStr: string; Str: PChar; out P: Integer): Integer; var Ptr: PChar; begin Ptr := StrPos(Str, PChar(SubStr)); if Ptr = nil then Result := -1 else Result := Integer(Ptr) - Integer(Str); P := Result; end; function InternalReplace(const Str, OldSub, NewSub: string): string; var PrePos: Integer; CurPos: Integer; OldLen, NewLen: Integer; begin PrePos := 1; Result := Str; OldLen := Length(OldSub); NewLen := Length(NewSub); while InternalPos(OldSub, @Result[PrePos], CurPos) >= 0 do begin Inc(PrePos, CurPos); Delete(Result, PrePos, OldLen); Insert(NewSub, Result, PrePos); Inc(PrePos, NewLen); end; end; var i: Integer; begin Result := Str; for i := High(Values) downto Low(Values) do Result := InternalReplace(Result, '%' + IntToStr(i + 1), Values[i]); end; Пример использования: FmtString('%1 %2', ['Пример', 'использования']); Вот перевод текста на русский язык: Это функция Delphi, называемая Функция использует два вспомогательных функции: Разбивка:
Пример использования функции: Обратите внимание:
В целом, это базовая реализация форматирования строк с помощью placeholder. Она может быть улучшена добавлением дополнительных функций (например, обработкой экранированных символов, поддержкой нескольких форматов) и проверок на ошибки. В статье описана функция FmtString для форматирования строки с использованием подстановочных символов %1, %2 и т.д., заменяющих соответствующие значения из массива Values. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |