Быстрая функция для разбивки строки на части (слова) в один цикл.

Материал из DRKB

Быстрая функция для разбивки строки на части (слова) в один цикл.[править | править код]

type 
  TDelim = set of Char;
  TArrayOfString = array of string;

//*******************
// Разбивает строку с разделителями на части
// и возвращает массив частей
function fcToParts(sString: String; tdDelim: TDelim): TArrayOfString
var
  iCounter, iBegin: Integer;
begin
  if Length(sString) > 0 then
  begin
    Include(tdDelim, #0);
    iBegin := 1;
    SetLength(Result, 0);
    for iCounter := 1 to Length(sString)+1 do
    begin
      if (sString[iCounter] in tdDelim) then
      begin
        SetLength(Result, Length(Result)+1);
        Result[Length(Result)-1] := Copy(sString, iBegin, iCounter - iBegin);
        iBegin := iCounter + 1;
      end;
    end;
  end;
end;


Пример использования:

var
  StrArr: TArrayOfString;

StrArr := fcToParts('строка1-строка2@строка3', ['-','@']);


Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00170