{ **** 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, которая удаляет указанный символ из начала и конца заданной строки. Вот разбивка кода:
functionTrimString(Str:string;Symbol:char):string;beginResult:=Str;ifStr=''thenexit;Str:=Trim(Str);// Удаление ведущих и.trailing'овских пробелов// Удаление символа из начала строкиwhile(Length(Str)>0)and(AnsiUpperCase(Str[1])=AnsiUpperCase(Symbol))doDelete(Str,1,1);// Удаление символа из конца строкиwhile(Length(Str)>0)and(AnsiUpperCase(Str[Length(Str)])=AnsiUpperCase(Symbol))doDelete(Str,Length(Str),1);Result:=Str;end;
Функция принимает два параметра: Str (входная строка) и Symbol (символ для удаления). Она возвращает новую строку с указанным символом удаленным из начала и конца.
Работа функции:
Функция начинает с присваивания входной строки переменной Result.
Если входная строка пуста, функция выходит из программы.
Функция вызывает встроенную функцию Trim для удаления ведущих и trailing'овских пробелов из входной строки.
Затем она вступает в цикл, который продолжается, пока первый символ строки соответствует указанному символу (преобразованному в верхний регистр). В каждом шаге цикла функция удаляет первый символ строки с помощью процедуры Delete.
После удаления символа из начала функция вступает в другой цикл, который продолжается, пока последний символ строки соответствует указанному символу. Опять же, она удаляет последний символ строки в каждом шаге цикла.
Наконец, функция присваивает модифицированную строку переменной 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