struct StringsBase *StringsBase=0L; /*#define RUN*/ #ifdef RUN char *RepStrBetweenStrs(s,as,bs,rs) char *s,*as; register char *bs,*rs; { register char *p,*ap,*bp,*cp,*pp,c; register long l,rslenl; p=s; pp=0; l=0; if((long)s & (long)as & (long)bs & (long)rs) l=1; if(!l) { *s=0; s=0; p=0; } if(!*as && !*bs) { l=0; strcpy(s,rs); } /* keine grenzen */ if(l) { ap=rs; l=0; do l++; while(*ap++); rslenl=l-1; p=ap=s; /* strlen(rs);*/ do { if(ap) ap=(char *)StrStr(p,as); /* Exists as ? */ if(ap) { bp=as; do ap++; while(*bp++); ap--; }/* Set after as */ if(ap) bp=(char *)StrStr(ap,bs); /* Exists bs ? */ pp=bp; if(!bp) ap=0; p=ap; c=*bp; if( ap && bp && (bp>=ap)) { l=bp-ap; if(l=bp); *cp--=*pp--; } p=ap; cp=rs; do *p++=*cp; while(*cp++); p--; /* copy replacestring */ *p=c; pp=bp; if(l>rslenl) { do *p++=*pp; while(*pp++); } /* copy rest */ bp=bs; l=0; do *p++,l++; while(*bp++); if(ap) p=ap+rslenl+l-1; } } while(ap && bp); } return s; /* $VER: RepStrBetweenStrs sep04 0.15 */ }; #endif long test(s,as,bs,rs,outs) char *s; char *as; char *bs; char *rs; char *outs; { long el=0,lenl=0; char os[256],*p; strcpy(os,s); if(as) printf("\nIN as <%7s> %ld ",as,(long)strlen(as)); if(bs) printf(" bs <%7s> %ld rs = <%s>\n",bs,(long)strlen(bs),rs); p=(char *)RepStrBetweenStrs(s,as,bs,rs); printf("return = <%s> %x l = %ld\n",p,p,(long)strlen(p)); if(!p) printf("NOT FOUND "); if(!as) printf("as = NULL "); if(!bs) printf("bs = NULL "); printf("OUT <%s> %x len %ld\n",s,s,lenl=(long)strlen(s)); strcpy(s,os); /* lenl=(long)strlen(s);*/ sprintf(os,"%ld",lenl); strcat(outs,os); strcat(outs," "); return el; /* */ } int main() { /* MAIN */ long el=0; char *p,s[1024],as[1024],rs[256],o[256]; el--; strcpy(rs,"test"); StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); strcpy(as,"Dies11 ist221122 ein Test11s22tring von Getstrin11g222"); StrCpy(o,""); /* strcpy(as,"Dies11 ist221122 ein "); */ strcpy(s,as); printf("Inputstring = <%s>\n",as); strcpy(as,""); el=test(s,"11","22",rs,o); el=test(s,"D","e",rs,o); el=test(s,"ist",0,rs,o); el=test(s,0,"ist",rs,o); el=test(s,"D","s",rs,o); el=test(s,"s","g",rs,o); el=test(s,"D","g",rs,o); el=test(s,"%","ein",rs,o); el=test(s,"ist","",rs,o); el=test(s,"11","",rs,o); el=test(s,"ist","Test",rs,o); el=test(s,"ist","test",rs,o); el=test(s,"","tstr",rs,o); el=test(s,"","tstr",as,o); el=test(s,"","ein",as,o); el=test(s,"Test","",as,o); el=test(s,"Test","g22",as,o); el=test(s,"","2",rs,o); el=test(s,"2","",rs,o); el=test(s,"tst","",rs,o); el=test(s,"Di","e",rs,o); el=test(s,"st","st",rs,o); el=test(s,"Test","st",rs,o); el=test(s,"D","e",as,o); strcpy(rs,"@"); el=test(s,"D","e",rs,o); el=test(s,"11","22",rs,o); strcpy(s,"html codeDEM142,50"); strcat(s,"138,350,00
"); printf("\nNEW = <%s>\n",s); el=test(s,">","<",as,o); el=test(s,"<",">",as,o); el=test(s,"<",">",0,o); el=test(s,"","","",o); el=test(s,"","","@",o); el=test(s,"","","test",o); printf("%s \n",o); if(StringsBase) CloseLibrary(StringsBase); return el; } /* END */ /*Inputstring = IN as < 11> 2 bs < 22> 2 rs = return = f6e4 l = 64 OUT f6e4 len 64 IN as < D> 1 bs < e> 1 rs = return = f6e4 l = 57 OUT f6e4 len 57 IN as < ist> 3 return = <(null)> 0 l = 0 NOT FOUND bs = NULL OUT <> f6e4 len 0 bs < ist> 3 rs = return = <(null)> 0 l = 0 NOT FOUND as = NULL OUT <> f6e4 len 0 IN as < D> 1 bs < s> 1 rs = return = f6e4 l = 56 OUT f6e4 len 56 IN as < s> 1 bs < g> 1 rs = return = f6e4 l = 26 OUT f6e4 len 26 IN as < D> 1 bs < g> 1 rs = return = f6e4 l = 25 OUT f6e4 len 25 IN as < %> 1 bs < ein> 3 rs = return = f6e4 l = 54 OUT f6e4 len 54 IN as < ist> 3 bs < > 0 rs = return = f6e4 l = 58 OUT f6e4 len 58 IN as < 11> 2 bs < > 0 rs = return = f6e4 l = 70 OUT f6e4 len 70 IN as < ist> 3 bs < Test> 4 rs = return = f6e4 l = 47 OUT f6e4 len 47 IN as < ist> 3 bs < test> 4 rs = return = f6e4 l = 54 OUT f6e4 len 54 IN as < > 0 bs < tstr> 4 rs = return = f6e4 l = 16 OUT f6e4 len 16 IN as < > 0 bs < tstr> 4 rs = <> return = f6e4 l = 12 OUT f6e4 len 12 IN as < > 0 bs < ein> 3 rs = <> return = f6e4 l = 37 OUT f6e4 len 37 IN as < Test> 4 bs < > 0 rs = <> return = f6e4 l = 54 OUT f6e4 len 54 IN as < Test> 4 bs < g22> 3 rs = <> return = f6e4 l = 29 OUT f6e4 len 29 IN as < > 0 bs < 2> 1 rs = return = f6e4 l = 45 OUT f6e4 len 45 IN as < 2> 1 bs < > 0 rs = return = f6e4 l = 90 OUT f6e4 len 90 IN as < tst> 3 bs < > 0 rs = return = f6e4 l = 58 OUT f6e4 len 58 IN as < Di> 2 bs < e> 1 rs = return = f6e4 l = 58 OUT f6e4 len 58 IN as < st> 2 bs < st> 2 rs = return = f6e4 l = 45 OUT f6e4 len 45 IN as < Test> 4 bs < st> 2 rs = return = f6e4 l = 40 OUT f6e4 len 40 IN as < D> 1 bs < e> 1 rs = <> return = f6e4 l = 53 OUT f6e4 len 53 IN as < D> 1 bs < e> 1 rs = <@> return = f6e4 l = 54 OUT f6e4 len 54 IN as < 11> 2 bs < 22> 2 rs = <@> return = f6e4 l = 52 OUT f6e4 len 52 NEW = <html codeDEM142,50138,350,00
> IN as < >> 1 bs < <> 1 rs = <> return = <
> f6e4 l = 56 OUT <
> f6e4 len 56 IN as < <> 1 bs < >> 1 rs = <> return = <<><>html code<><>DEM<><>142,50<><>138,35<><>0,00<><><>> f6e4 l = 54 OUT <<><>html code<><>DEM<><>142,50<><>138,35<><>0,00<><><>> f6e4 len 54 IN as < <> 1 bs < >> 1 rs = <(null)> return = <(null)> 0 l = 0 NOT FOUND OUT <> f6e4 len 0 IN as < > 0 bs < > 0 rs = <@> return = <@> f6e4 l = 1 OUT <@> f6e4 len 1 64 57 0 0 56 26 25 54 58 70 47 54 16 12 37 54 29 45 90 58 58 45 40 53 54 52 56 54 0 0 1 4 END */