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

Обрезание строки по длине

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

Обрезание строки по длине

Автор: ___Nikolay
WEB-сайт: http://delphiworld.narod.ru

// Обрезание строки по длине
function TfmDW6Main.BeautyStr(s: string; iLength: integer): string;
var
  bm: TBitmap;
  sResult: string;
  iStrLen: integer;
  bAdd: boolean;
begin
  Result := s;
  if Trim(s) = '' then
    exit;

  bAdd := false;
    sResult := s;
  bm := TBitmap.Create;
  bm.Width := 100;
  bm.Height := 100;
  iStrLen := bm.Canvas.TextWidth(sResult);
  while iStrLen > iLength do
  begin
    if Length(sResult) < 4 then
      break;

    Delete(sResult, Length(sResult) - 2, 3);
    bAdd := true;
    iStrLen := bm.Canvas.TextWidth(sResult);
  end;

  if (iStrLen <= iLength) and bAdd then
    sResult := sResult + '...';

  bm.Free;
  Result := sResult;
end;

Вот перевод контента на русский язык:

Функция Delphi, называемая BeautyStr, обрезает строку до указанной длины, сохраняя последние три символа, если это необходимо.

Подпись функции

Функция принимает два параметра: * s: строка, которую нужно обрезать * iLength: целое число, представляющее собой желаемую длину выходной строки

Функция возвращает новую строку с обрезанным текстом.

Локальные переменные

Функция объявляет несколько локальных переменных: * bm: объект TBitmap, используемый для расчета ширины входной строки * sResult: строка, которая будет хранить результат обрезки * iStrLen: целое число, представляющее собой текущую длину входной строки * bAdd: логическое флаг, указывающее, нужно ли добавить эллипсис (...) в конце

Основная логика

Функция начинается с присваивания входной строки переменной Result. 1. Если входная строка пуста, функция выходит из себя сразу. 2. Она присваивает значение входной строки переменной sResult и создает объект TBitmap с шириной 100 пикселей. 3. Функция рассчитывает ширину входной строки используя метод TextWidth свойства Canvas объекта TBitmap. 4. Пока рассчитанная ширина больше желаемой длины: * Если входная строка имеет менее четырех символов, функция выходит из цикла. * Иначе, она удаляет три символа с конца входной строки используя процедуру Delete и обновляет переменную iStrLen. 5. Если полученная длина строки меньше или равна желаемой длине, но bAdd истинно (т.е. произошло обрезание), функция добавляет эллипсис (...) к результату.

Очистка

Наконец, функция освобождает объект TBitmap и присваивает обрезанный результат переменной Result.

Альтернативное решение

Код можно улучшить, используя более прямой подход без необходимости использования объекта TBitmap. Вот альтернативная реализация:

function TfmDW6Main.BeautyStr(s: string; iLength: integer): string;
var
  sResult: string;
begin
  Result := s;
  if Trim(s) = '' then
    exit;

  sResult := '';
  for i := 1 to Length(s) do
  begin
    if Length(sResult) + 1 > iLength then
    begin
      sResult := Copy(s, 1, iLength - 3);
      Result := sResult + '...';
      Exit;
    end;
    sResult := sResult + s[i];
  end;
end;

Эта реализация использует простой цикл для итерации над входной строкой и строит обрезанный результат. Она проверяет, добавляет ли каждый символ превышение желаемой длины, и если да, то добавляет эллипсис (...) к результату. Этот подход более эффективен и проще для понимания, чем оригинальный код.

В статье представлено программное решение на языке Delphi для обрезания строки по длине, которое позволяет ограничить количество символов в строке и добавить троеточие в конце если необходим.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:19:39/0.0057752132415771/1