Ramin Hashimzade

Фильтр по тегу: парсинг строк с разделителями


Парсинг строки с разделителями - Delphi

функция который возвращает кол. массива.

function DCOUNT(str, Delimeter: string) : integer;
var
 StrL : TStringList;
 ParseStr : string;
begin
  try
    StrL := TStringList.Create;
    ParseStr:= StringReplace(str, Delimeter, #13, [rfReplaceAll]);
    StrL.Text := ParseStr;
    Result := StrL.Count;
  finally
    StrL.Free;
  end;
end;

Пример :
DCOUNT('test1|test2|test3|test4', '|') = 4


function StrBreak(str, Delimeter: string; fromParts, Cnt : integer) : string;
{
 str : your string
 Delimeter : Delimeter symbol
 fromParts : Initial position
 Cnt : Number of items
}
var
 StrL : TStringList;
 ParseStr : string;
 i : integer;
begin
  Result := '';
  try
    StrL := TStringList.Create;
    ParseStr:= StringReplace(str, Delimeter, #13, [rfReplaceAll]);
    StrL.Text := ParseStr;
    if StrL.Count > 0 then
    begin
      for i := 0 to Cnt-1 do
        if (StrL.Count > i) and (StrL.Count > fromParts) then
            if i>0 then Result := Result + Delimeter + StrL.Strings[fromParts+i]
                    else Result := Result + StrL.Strings[fromParts+i];
    end;
  finally
    StrL.Free;
  end;
end;

Пример :
StrBreak('test1|test2|test3|test4', '|', 0,1) = test1
StrBreak('test1|test2|test3|test4', '|', 0,2) = test1|test2
StrBreak('test1|test2|test3|test4', '|', 1,2) = test2|test3
StrBreak('test1|test2|test3|test4', '|', 3,1) = test4