Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Очистка строки слева и справа от указанного символа

Delphi , Синтаксис , Текст и Строки



Автор: Lipskiy
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Функция возвращает строку Str, очищенную слева и справа от указанного символа Symbol.
Работает быстрее аналогичной функции UBPFD.TrimEx, так как не использует функцию
поиска Pos, имеет более компактный код.

Зависимости: System, SysUtils
Автор:       lipskiy, lipskiy@mail.ru, ICQ:51219290, Санкт-Петербург
Copyright:   Собственное написание (lipskiy)
Дата:        2 июня 2002 г.
***************************************************** }

function TrimString(Str: string; Symbol: char): string;
begin
  Result := Str;
  if Str = '' then
    exit;
  Str := Trim(Str);
  // Удаляем в начале строки
  while (length(Str) > 0) and
    (AnsiUpperCase(Str[1]) = AnsiUpperCase(Symbol)) do
    Delete(Str, 1, 1);
  // Удаляем в конце строки
  while (length(Str) > 0) and
    (AnsiUpperCase(Str[length(Str)]) = AnsiUpperCase(Symbol)) do
    Delete(Str, length(Str), 1);
  Result := Str;
end;

Программная функция Delphi под именем TrimString, которая удаляет указанный символ из начала и конца заданной строки. Вот разбивка кода:

function TrimString(Str: string; Symbol: char): string;
begin
  Result := Str;
  if Str = '' then
    exit;

  Str := Trim(Str); // Удаление ведущих и.trailing'овских пробелов

   // Удаление символа из начала строки
  while (Length(Str) > 0) and
         (AnsiUpperCase(Str[1]) = AnsiUpperCase(Symbol)) do
    Delete(Str, 1, 1);

   // Удаление символа из конца строки
  while (Length(Str) > 0) and
         (AnsiUpperCase(Str[Length(Str)]) = AnsiUpperCase(Symbol)) do
    Delete(Str, Length(Str), 1);

  Result := Str;
end;

Функция принимает два параметра: Str (входная строка) и Symbol (символ для удаления). Она возвращает новую строку с указанным символом удаленным из начала и конца.

Работа функции:

  1. Функция начинает с присваивания входной строки переменной Result.
  2. Если входная строка пуста, функция выходит из программы.
  3. Функция вызывает встроенную функцию Trim для удаления ведущих и trailing'овских пробелов из входной строки.
  4. Затем она вступает в цикл, который продолжается, пока первый символ строки соответствует указанному символу (преобразованному в верхний регистр). В каждом шаге цикла функция удаляет первый символ строки с помощью процедуры Delete.
  5. После удаления символа из начала функция вступает в другой цикл, который продолжается, пока последний символ строки соответствует указанному символу. Опять же, она удаляет последний символ строки в каждом шаге цикла.
  6. Наконец, функция присваивает модифицированную строку переменной Result и возвращает ее.

Автор утверждает, что эта функция быстрее аналогичной функции с использованием функции Pos, и имеет более компактный код. Однако без бенчмаркинга или профилярования трудно проверить это заявление.

Один из потенциальных проблем в этом реализации - использование функции AnsiUpperCase для сравнения символов, что может быть медленнее для строк, содержащих не-ASCII-символы. Более эффективный подход бы использовать простой сравнение символов (например, Str[1] = Symbol) вместо преобразования обоих символов в верхний регистр.

В целом, код appears to be well-written and easy to understand. Однако всегда полезно тестировать и проверять любую новую функцию перед использованием ее в производственном коде.

Очистка строки слева и справа от указанного символа: функция TrimString возвращает строку, очищенную от указанного символа, работая быстрее аналогичной функции UBPFD.TrimEx.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:35:01/0.0034539699554443/0