Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function MultiBetween(str, s1, s2: string): array of string;
- var
- strL, s1L, s2L, o, n, e, r: Integer;
- begin
- s1L := Length(s1);
- s2L := Length(s2);
- strL := Length(str);
- if (s1 = '') or (s2 = '') or (strL <= (s1L + s2L)) then
- Exit;
- SetLength(Result, (strL - (s1L + s2L)));
- repeat
- n := PosEx(s1, str, (n + 1));
- if (n < 1) then
- Break;
- e := PosEx(s2, str, (n + 1));
- if (e < 1) then
- Break;
- repeat
- o := n;
- n := PosEx(s1, str, (n + 1));
- until (n >= e) or (n < 1);
- n := o;
- Result[r] := Between(s1, s2, Copy(str, n, (s1L + (e + s2L))));
- if (Result[r] <> '') then
- Inc(r);
- until (e < 1) or (n < 1);
- SetLength(Result, r);
- end;
- var
- h, i: Integer;
- TSA: array of string;
- Text: string;
- begin
- ClearDebug;
- WriteLn('MultiBetween() Test1:');
- Text := '<tag>test1<tag>..<tag>test2dgtsgtsgdsgs<tag>....<tag>test3<tag>.....<tag>test4<tag>.....';
- TSA := MultiBetween(Text, '<tag>', '<tag>');
- h := High(TSA);
- for i := 0 to h do
- WriteLn('TSA[' + IntToStr(i) + ']: ' + TSA[i]);
- WriteLn('');
- SetLength(TSA, 0);
- WriteLn('MultiBetween() Test2:');
- Text := '<tag>test1</tag>....<tag>test2dgtsgtsgdsgs</tag>....<tag>test3</tag>.....<tag>test4</tag>.....';
- TSA := MultiBetween(Text, '<tag>', '</tag>');
- h := High(TSA);
- for i := 0 to h do
- WriteLn('TSA[' + IntToStr(i) + ']: ' + TSA[i]);
- WriteLn('');
- SetLength(TSA, 0);
- WriteLn('MultiBetween() Test3:');
- Text := '||*|*||<|<||[|]||>|>||*|*||';
- TSA := MultiBetween(Text, '|', '|');
- h := High(TSA);
- for i := 0 to h do
- WriteLn('TSA[' + IntToStr(i) + ']: ' + TSA[i]);
- SetLength(TSA, 0);
- end.
Advertisement
Add Comment
Please, Sign In to add comment