Advertisement
Skorm

str_explode2

Jun 14th, 2013
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. /// callfunc "str_explode2" , "<array output>", "<string>"{, <Amount of Delemiter>{, "<Delemiter>"{, "<Delemiter>"}}};
  2. function    script  str_explode2    {
  3.  
  4.     if ( !getarg(2) )
  5.         return callfunc("str_toarray", getarg(1), getarg(0) );
  6.  
  7.     sleep2 1;
  8.  
  9.     setarray .@char$[0],
  10.         " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
  11.         "e", "i", "a", "s", "r", "n", "t", "o", "u", "l", "c",
  12.         "p", "m", "d", "v", "h", "g", "f", "b", "y", "q", "k",
  13.         "z", "x", "j", "w", "_", "-", "(", ")", ";", ",", ":",
  14.         ".";
  15.  
  16.     set .@charsize, getarraysize(.@char$);
  17.     set .@tmp$, "|~key~|";
  18.     set .@str$, .@tmp$ + getarg(1) ;
  19.     set .@len,  getstrlen(getarg(1));
  20.     set .@delem_len,    getarg(2);
  21.     for( set .@g,0;.@g<.@delem_len;set .@g,.@g+1 ){
  22.         setd(".@parse_len"+.@g, getstrlen(getarg(3+.@g)));
  23.     }
  24.    
  25.     while( .@len > .@s ) {
  26.         set .@i, 0 ;
  27.         while( .@i < .@charsize  ) {
  28.             if ( ! ( set(.@l,.@l+1) % 600) )
  29.                 sleep2 1;
  30.             if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
  31.                 set .@tmp$, .@tmp$ + .@char$[.@i];
  32.                 set .@g, 0;
  33.                 while( .@g < .@delem_len ) {
  34.                     if ( ! ( set(.@l,.@l+1) % 600) )
  35.                         sleep2 1;
  36.                     if ( .@char$[.@i] == getarg((3+.@g)) ) {
  37.                         set .@p, .@p + 1;
  38.                         set .@s, .@s + (getd(".@parse_len"+.@g)-1) ;
  39.                         break;
  40.                     }
  41.                     set .@g,.@g+1;
  42.                 }
  43.                 if ( .@delem_len == .@g )
  44.                     set .@arr$[.@p], .@arr$[.@p] + .@char$[.@i];
  45.                 break;
  46.             }
  47.             set .@i, .@i+1 ;
  48.         }
  49.         if ( .@i == .@charsize ) return 0;
  50.         else set .@s, .@s+1 ;
  51.     }
  52.     deletearray getd(getarg(0));
  53.     copyarray getd(getarg(0)), .@arr$, .@p+1;
  54.     return .@p+1;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement