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

Сортировка массива строк по длине и алфавиту в Delphi

Delphi , Базы данных , Сортировка и Фильтр

Сортировка массива строк по длине и алфавиту в Delphi

При работе с массивами строк в Delphi часто возникает потребность их сортировки. Одним из распространенных требований является сортировка по длине строк, при этом если длина одинакова, то строки должны быть отсортированы в алфавитном порядке. В этой статье мы рассмотрим, как это можно сделать, используя встроенные средства Delphi.

Итак, у нас есть массив строк, который мы хотим отсортировать. Сортировка по длине и алфавиту одновременно может показаться сложной, но с помощью сравнения значений мы можем достичь этого.

uses
  System.Generics.Defaults,
  System.Generics.Collections,
  System.Math,
  System.SysUtils;

procedure TForm1.FormCreate(Sender: TObject);
var
  _SortMe: TStringDynArray;
begin
  _SortMe := TStringDynArray.Create('abc', 'zwq', 'Long', 'longer');

  TArray.Sort<string>(_SortMe, TDelegatedComparer<string>.Construct(
    function(const Left, Right: string): Integer
    begin
      // Сравниваем по длине, в обратном порядке, так как длина строки больше, тем выше она должна быть
      Result := CompareValue(Right.Length, Left.Length);
      // Если длина одинакова, сравниваем строки в алфавитном порядке
      if Result = EqualsValue then
        Result := CompareText(Left, Right);
    end));

  // Выводим отсортированный массив в Memo
  Memo1.Lines.Text := _SortMe.Join(#10);
end;

В приведенном примере мы используем TDelegatedComparer для определения собственной функции сравнения, которая возвращает отрицательное значение, если Left должно предшествовать Right, положительное значение, если Right должно предшествовать Left, или ноль, если они равны. В нашей функции сравнения мы сначала сравниваем длину строк, а затем, если длина одинакова, сравниваем строки в алфавитном порядке.

После сортировки мы используем метод Join для объединения элементов массива в одну строку, разделенную символом перевода строки, и выводим результат в Memo.

Результат сортировки будет таким: longer, Long, abc, zwq.

Также стоит отметить, что для этой задачи можно использовать и другие подходы, например, с помощью TStringList, но использование встроенных средств сортировки массивов в Delphi является более универсальным и гибким решением.

Создано по материалам из источника по ссылке.

Эта статья посвящена сортировке массива строк в 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 12:29:13/0.0036849975585938/0