struct StringsBase *StringsBase=0L;
/*char *RepStrBetweenStrsCpy(char *ds,char *s,char *as,char *bs,char *rs);
*/
/*#define RUN*/
#ifdef RUN
char *RepStrBetweenStrsCpy(ds,s,as,bs,rs)
register char *ds; register char *s; register char *as;
register char *bs; register char *rs; {
register char *p,*ap,*bp,*rp;
ap=ds; if(ap) *ds=0;
if(!as) ap=0; if(!bs) ap=0; if(!rs) ap=0;
if(!ap) ds=0;
if(ap) { if(!*as) if(!*bs) {StrCpy(ds,rs); ap=0; } }
if(ap) {
*ds=0; p=ap=s; bp=p;
do {
if(p) ap=(char *)AfterStrStr(p,as);
if(ap) {
StrnCat(ds,p,ap-p);
bp=(char *)AfterStrStr(ap,bs);
if(!bp) p=ap;
if(bp) { if(*p)StrCat(ds,rs); StrCat(ds,bs); p=ap=bp; }
}
if(!ap) bp=0;
} while(bp);
if(p) { StrCat(ds,p); }
}
return ds; /* $VER: RepStrBetweenStrsCpy 0.8 */
};
#endif
long test(s,as,bs,rs,outs) char *s; char *as; char *bs; char *rs; char *outs; {
long el=0,lenl; char os[256],*p; strcpy(os,s);
if(as) printf("\nIN as <%7s> %ld ",as,(long)strlen(as));
if(!as) printf("as = NULL "); if(!bs) printf("bs = NULL ");
if(bs) printf(" bs <%7s> %ld rs = <%s>",bs,(long)strlen(bs),rs);
puts(); p=(char *)RepStrBetweenStrsCpy(os,s,as,bs,rs);
printf("ret <%s> %x l = %ld\n",p,p,(long)strlen(p));
/* if(!p) printf("NOT FOUND "); lenl=(long)strlen(os);*/
if(!p) printf("NOT FOUND "); lenl=(long)strlen(p);
printf("OUT <%s> %x len %ld\n",os,os,lenl);
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(as,"Dies11 ist221122 ein "); */
strcpy(o,""); strcpy(s,as); printf("Inputstring = <%s>\nVersion 0.8\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,35 | 0,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);
p=(char *)RepStrBetweenStrsCpy(0,s,"as","bs",rs); printf("p %x ds=0 \n",p);
printf("%s \n",o);
if(StringsBase) CloseLibrary(StringsBase);
return el;
} /* END */
/*
Inputstring =
IN as < 11> 2 bs < 22> 2 rs =
ret f4be l = 64
OUT f4be len 64
IN as < D> 1 bs < e> 1 rs =
ret f4be l = 57
OUT f4be len 57
IN as < ist> 3 bs = NULL
ret <(null)> 0 l = 0
NOT FOUND OUT <> f4be len 0
as = NULL bs < ist> 3 rs =
ret <(null)> 0 l = 0
NOT FOUND OUT <> f4be len 0
IN as < D> 1 bs < s> 1 rs =
ret f4be l = 56
OUT f4be len 56
IN as < s> 1 bs < g> 1 rs =
ret f4be l = 26
OUT f4be len 26
IN as < D> 1 bs < g> 1 rs =
ret f4be l = 25
OUT f4be len 25
IN as < %> 1 bs < ein> 3 rs =
ret f4be l = 54
OUT f4be len 54
IN as < ist> 3 bs < > 0 rs =
ret f4be l = 58
OUT f4be len 58
IN as < 11> 2 bs < > 0 rs =
ret f4be l = 70
OUT f4be len 70
IN as < ist> 3 bs < Test> 4 rs =
ret f4be l = 47
OUT f4be len 47
IN as < ist> 3 bs < test> 4 rs =
ret f4be l = 54
OUT f4be len 54
IN as < > 0 bs < tstr> 4 rs =
ret f4be l = 16
OUT f4be len 16
IN as < > 0 bs < tstr> 4 rs = <>
ret f4be l = 12
OUT f4be len 12
IN as < > 0 bs < ein> 3 rs = <>
ret f4be l = 37
OUT f4be len 37
IN as < Test> 4 bs < > 0 rs = <>
ret f4be l = 54
OUT f4be len 54
IN as < Test> 4 bs < g22> 3 rs = <>
ret f4be l = 29
OUT f4be len 29
IN as < > 0 bs < 2> 1 rs =
ret f4be l = 45
OUT f4be len 45
IN as < 2> 1 bs < > 0 rs =
ret f4be l = 90
OUT f4be len 90
IN as < tst> 3 bs < > 0 rs =
ret f4be l = 58
OUT f4be len 58
IN as < Di> 2 bs < e> 1 rs =
ret f4be l = 58
OUT f4be len 58
IN as < st> 2 bs < st> 2 rs =
ret f4be l = 45
OUT f4be len 45
IN as < Test> 4 bs < st> 2 rs =
ret f4be l = 40
OUT f4be len 40
IN as < D> 1 bs < e> 1 rs = <>
ret f4be l = 53
OUT f4be len 53
IN as < D> 1 bs < e> 1 rs = <@>
ret f4be l = 54
OUT f4be len 54
IN as < 11> 2 bs < 22> 2 rs = <@>
ret f4be l = 52
OUT f4be len 52
NEW = <html codeDEM142,50 | 138,35 | 0,00
|
>
IN as < >> 1 bs < <> 1 rs = <>
ret < | |
|
> f4be l = 56
OUT < | |
|
> f4be len 56
IN as < <> 1 bs < >> 1 rs = <>
ret <<><>html code<><>DEM<><>142,50<><>138,35<><>0,00<><><>> f4be l = 54
OUT <<><>html code<><>DEM<><>142,50<><>138,35<><>0,00<><><>> f4be len 54
IN as < <> 1 bs < >> 1 rs = <(null)>
ret <(null)> 0 l = 0
NOT FOUND OUT <> f4be len 0
IN as < > 0 bs < > 0 rs = <>
ret <> f4be l = 0
OUT <> f4be len 0
IN as < > 0 bs < > 0 rs = <@>
ret <@> f4be l = 1
OUT <@> f4be len 1
IN as < > 0 bs < > 0 rs =
ret f4be l = 4
OUT f4be len 4
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
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
*/