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

Функция для разворачивания строк

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



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

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Функция для "разворачивания" строк

Входные параметры:
Input - входная строка, которую необходимо представить в "развернутом виде"

Зависимости: стандартный набор включаемых модулей
Автор:       Ru, DiVo_Ru@rambler.ru, Одесса
Copyright:   DiVo 2002, creator Ru
Дата:        12 ноября 2002 г.
***************************************************** }

function DecStr(Input: string): string;
var
  i, j, t: integer;
  s: string;
begin
  if pos('-', Input) <> 0 then
  begin
    while length(Input) <> 0 do
    begin
      if Input[1] = ',' then
      begin
        i := strtoint(s);
        delete(Input, 1, 1);
        result := result + s + ',';
        s := '';
      end
      else
      begin
        if Input[1] = '-' then
        begin
          i := strtoint(s);
          delete(Input, 1, 1);
          t := pos(',', Input);
          result := result + s + ',';
          s := '';
          if t = 0 then
          begin
            j := strtoint(Input);
            Input := '';
          end
          else
          begin
            j := strtoint(copy(Input, 1, t - 1));
            delete(Input, 1, t);
          end;
          inc(i);
          while i < j + 1 do
          begin
            result := result + inttostr(i) + ',';
            inc(i);
          end;
        end
        else
        begin
          s := s + Input[1];
          delete(Input, 1, 1);
        end;
      end;
    end;
  end
  else
    result := Input;
  if s <> '' then
    result := result + s;
end;
на входе: 1,3,5-10,15
на выходе: 1,3,5,6,7,8,9,10,15 

Функция Delphi под именем DecStr, которая принимает строку в качестве входных данных и возвращает преобразованную версию строки. Функция предназначена для "развязывания" строки, содержащей значения, разделенные запятой, с возможными указаниями диапазона, где диапазон указывается символом тире.

Вот шаг за шагом, как функция работает:

  1. Она проверяет, содержит ли входная строка символ тире ('-'). Если она содержит, то она enters цикл, который продолжается до тех пор, пока вся входная строка не будет обработана.
  2. Внутри цикла она проверяет, является ли текущий символ запятой (`,) или символом тире ('-').
    • Если это запятая, функция assumes, что предыдущие символы образуют одиночное значение и добавляет их к результату строки, вместе с trailing запятой.
    • Если это символ тире, функция извлекает значения между тире, используя функцию pos для поиска позиции следующей запятой или конца строки. Затем она проходит от начального значения до конечного (включительно) и добавляет каждое значение к результату строке, вместе с trailing запятой.
  3. Если входная строка не содержит символ тире, функция просто возвращает оригинальную входную строку.

Пример входных данных "1,3,5-10,15" будет обрабатываться следующим образом:

  • Функция enters цикл из-за символа тире.
  • Она извлекает значения "1", "3" и "5" из начальной части строки и добавляет их к результату строке, вместе с trailing запятой: "1,3,5,"
  • Затем она обрабатывает указание диапазона "5-10" , проходит от 5 до 10 (включительно) и добавляет каждое значение к результату строке, вместе с trailing запятой: "1,3,5,6,7,8,9,10,"
  • Наконец, она добавляет последнее значение "15" к результату строке, вместе с trailing запятой: "1,3,5,6,7,8,9,10,15" В результате получается вывод "1,3,5,6,7,8,9,10,15".

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

Функция DecStr предназначена для разворачивания строк, содержащих список чисел, разделенных запятой и диапазонами чисел в формате 'начала-конца', для представления их в виде отдельных чисел.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 05:47:06/0.0056679248809814/0