08.09.2008, 18:36
I did some short function today. It works like strfind(). That function uses '*' and '?' characters to find any character ('?') or string ('*'), like in MS Windows explorer.
Made few tries today and I think, it works preety fine. If anyone found some gliches, please let me know.
Код:
stock FindStr(const str[],const sub[],bool:ignorecase=false,pos=0){ new i=pos,j=1,x=-1,y,l=strlen(sub),bool:c; while(str[i]){ if(sub[y]==42){ if(!c)x=i;while(str[i+j-1]&&str[i+y-1]!=sub[y+1])j++;y++,c=true; if(y>=l)break;continue; }else{ new bool:d; while(j){ if(sub[y]==str[i]||sub[y]==63||(str[i]>=65&&str[i]<=122&&str[i]%32==sub[y]%32&&ignorecase)){ if(!c)x=i;c=true,d=true,y++;if(sub[y-1]!=63){i++;break;} }i++,j--; }if(!d)y=0,x=-1,c=false; }j=1;if(y>=l)break; }return (y>=l?x:-1); }