[go: up one dir, main page]

Menu

[r19]: / MSTR.MPL  Maximize  Restore  History

Download this file

37 lines (27 with data), 1.1 kB

+mmem+mchr

strlen(s)   %s
strset(s,l) [%s=l<0?0,l>127?127,l;s]
strcpy(d,s) memcpy(d,s,%s+1)
strrev(s)   memrev(s+1,%s)-1
strdup(s)   strcpy(malloc(%s+1),s)
strupr(d,s) memmod(d+1,s+1,%d=%s,toupper)-1
strlwr(d,s) memmod(d+1,s+1,%d=%s,tolower)-1

strmid(d,s,ss,l) memmov(d+1,s+ss,%strset(d,std.min(l,%s-ss+1)))-1
strdel(d,dd,l)   [memmov(d+dd,d+dd+l,%strset(d,%d-l)-dd+1);d]

strins(d,dd,s) [
  memmov(d+dd+%s,d+dd,%d);
  memmov(d+dd,s+1,%s);
  strset(d,%d+%s)
]

stradd(s,c) s%(%s+=1)=c
strcat(d,s) strins(d,%d+1,s)

itoa(i,s;n) [n=i<0?i=-i;%s=0;@[s%(%s+=1)=i#10+'0';i/=10];n?s%(%s+=1)='-';strrev(s)]

vsprintf(s,f,p;ff,c,n%10) [
  ff=%s=0;ff<%f@(c=f%++ff)<>'%'?stradd(s,c),[c=f%++ff;
    c=='s'?strcat(s,!p),c=='c'?stradd(s,!p),c=='i'::c=='d'?strcat(s,itoa(!p,n$)),
    [stradd(s,c);p-=2];p+=2];s]

sprintf(str,fmt;args!10) vsprintf(str,fmt,args$)

strwhile(s,ss,is)       [ss<=%s?is(s%ss)@++ss;ss]
struntil(s,ss,is)       [ss<=%s?is(s%ss)==0@++ss;ss]
strtok(d,s,ss,is;s1,s2) [s2=struntil(s,s1=strwhile(s,ss,is),is);strmid(d,s,s1,s2-s1);s2]
strarg(d,s,ss) strtok(d,s,ss,isspace)