Janilabo

Janilabo | MultiBetween() [Simba]

Jun 20th, 2012
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.67 KB | None | 0 0
  1. function MultiBetween(str, s1, s2: string): array of string;
  2. var
  3.   strL, s1L, s2L, o, n, e, r: Integer;
  4. begin
  5.   s1L := Length(s1);
  6.   s2L := Length(s2);
  7.   strL := Length(str);
  8.   if (s1 = '') or (s2 = '') or (strL <= (s1L + s2L)) then
  9.     Exit;
  10.   SetLength(Result, (strL - (s1L + s2L)));
  11.   repeat
  12.     n := PosEx(s1, str, (n + 1));
  13.     if (n < 1) then
  14.       Break;
  15.     e := PosEx(s2, str, (n + 1));
  16.     if (e < 1) then
  17.       Break;
  18.     repeat
  19.       o := n;
  20.       n := PosEx(s1, str, (n + 1));
  21.     until (n >= e) or (n < 1);
  22.     n := o;
  23.     Result[r] := Between(s1, s2, Copy(str, n, (s1L + (e + s2L))));
  24.     if (Result[r] <> '') then
  25.       Inc(r);
  26.   until (e < 1) or (n < 1);
  27.   SetLength(Result, r);
  28. end;
  29.  
  30. var
  31.   h, i: Integer;
  32.   TSA: array of string;
  33.   Text: string;
  34.  
  35. begin
  36.   ClearDebug;
  37.   WriteLn('MultiBetween() Test1:');
  38.   Text := '<tag>test1<tag>..<tag>test2dgtsgtsgdsgs<tag>....<tag>test3<tag>.....<tag>test4<tag>.....';
  39.   TSA := MultiBetween(Text, '<tag>', '<tag>');
  40.   h := High(TSA);
  41.   for i := 0 to h do
  42.     WriteLn('TSA[' + IntToStr(i) + ']: ' + TSA[i]);
  43.   WriteLn('');
  44.   SetLength(TSA, 0);
  45.   WriteLn('MultiBetween() Test2:');
  46.   Text := '<tag>test1</tag>....<tag>test2dgtsgtsgdsgs</tag>....<tag>test3</tag>.....<tag>test4</tag>.....';
  47.   TSA := MultiBetween(Text, '<tag>', '</tag>');
  48.   h := High(TSA);
  49.   for i := 0 to h do
  50.     WriteLn('TSA[' + IntToStr(i) + ']: ' + TSA[i]);
  51.   WriteLn('');
  52.   SetLength(TSA, 0);
  53.   WriteLn('MultiBetween() Test3:');
  54.   Text := '||*|*||<|<||[|]||>|>||*|*||';
  55.   TSA := MultiBetween(Text, '|', '|');
  56.   h := High(TSA);
  57.   for i := 0 to h do
  58.     WriteLn('TSA[' + IntToStr(i) + ']: ' + TSA[i]);
  59.   SetLength(TSA, 0);
  60. end.
Advertisement
Add Comment
Please, Sign In to add comment