Когда-то очень давно в 2008м году на форуме Чертёнка выложил свою версию функции explode, написанную на Delphi.
uses StrUtils; type TStringDynArray = array of string; function Explode(sString, sExploader: string; out sOutArray: TStringDynArray; out iArraySize: integer): boolean; var iStrLen : Word; iExplLen : Word; sSubStr : String; iX : Word; iPos : Word; begin Result := False; // Считаем количество элементов Exploader в String iStrLen := Length(sString); iExplLen := Length(sExploader); iArraySize := 1; if ( iStrLen > iExplLen) then begin iPos := 0; while ( true ) do begin iPos := PosEx(sExploader, sString, iPos + 1); if (iPos <> 0) then begin iArraySize := iArraySize + 1; iPos := iPos + iExplLen - 1; end else break; end; end; // Разбераем строку SetLength(sOutArray, iArraySize); if (iArraySize <> 1) then begin for iX := 0 to iArraySize - 1 do begin iPos := Pos(sExploader, sString); if (iPos <> 0) then begin sOutArray[iX] := Copy(sString, 1, iPos - 1); sString := Copy(sString, iPos + iExplLen, Length(sString) - iPos - iExplLen + 1); end else sOutArray[iX] := sString; end; Result := True; end else sOutArray[0] := sString; end;
ps: Спасибо DrPass за содействие в написании, он указал на один немаловажный баг с повторителем строки.