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);
}

