How to write an equivalent to PHP explode(string $separator, string $string, int $limit = INT_MAX): array in Pascal

1 Answer

0 votes
program ExplodeDemo;

type
  TStringArray = array of string;

function Explode(separator, input: string; limit: Integer): TStringArray;
var
  parts: TStringArray;
  startPos, sepPos, splits: Integer;
begin
  SetLength(parts, 0);
  startPos := 1;
  splits := 0;

  while (splits < limit - 1) do
  begin
    sepPos := Pos(separator, Copy(input, startPos, Length(input) - startPos + 1));
    if sepPos = 0 then Break;

    // Adjust sepPos relative to full string
    sepPos := sepPos + startPos - 1;

    SetLength(parts, Length(parts) + 1);
    parts[High(parts)] := Copy(input, startPos, sepPos - startPos);

    startPos := sepPos + Length(separator);
    Inc(splits);
  end;

  // Add the remaining part
  SetLength(parts, Length(parts) + 1);
  parts[High(parts)] := Copy(input, startPos, Length(input) - startPos + 1);

  Explode := parts;
end;

var
  text, delimiter: string;
  limit, i: Integer;
  parts: TStringArray;
begin
  text := 'c++,c,python,php,java';
  delimiter := ',';
  limit := 3;

  parts := Explode(delimiter, text, limit);

  for i := Low(parts) to High(parts) do
    Writeln(parts[i]);
end.




(*
run:

c++
c
python,php,java

*)

 



answered Dec 5, 2025 by avibootz

Related questions

...