program MultiSplit;
type
{ Turbo Pascal strings are limited to 255 chars }
CharSet = set of char;
procedure SplitAndKeepDelimiter(S: string; Delims: CharSet);
var
i, start: integer;
sub: string;
begin
start := 1;
for i := 1 to Length(S) do
begin
if S[i] in Delims then
begin
{ 1. Extract text before delimiter }
if i > start then
begin
sub := Copy(S, start, i - start);
WriteLn('Token: ', sub);
end;
{ 2. Extract the delimiter itself (the "Keep" part) }
WriteLn('Delim: ', S[i]);
start := i + 1;
end;
end;
{ 3. Extract final remaining part }
if start <= Length(S) then
WriteLn('Token: ', Copy(S, start, 255));
end;
var
testStr: string;
myDelims: CharSet;
begin
testStr := 'aa,bbb;cccc.ddddd';
myDelims := [',', ';', '.']; { Define multiple delimiters here }
SplitAndKeepDelimiter(testStr, myDelims);
ReadLn;
end.
(*
run:
Token: aa
Delim: ,
Token: bbb
Delim: ;
Token: cccc
Delim: .
Token: ddddd
*)