10.11.2019, 20:20
Ich habe mal ein simples Beispiel vorbereitet, das einzelne Teile aus einem String herauslöst. Man kann das z.B. benutzen als Argumentparser, Wortzähler usw..
Es nutzt hier nur Leerzeichen als Trenner, man kann das aber natürlich anpassen auf ganze Strings von Worttrennern, wenn man will.
Es nutzt hier nur Leerzeichen als Trenner, man kann das aber natürlich anpassen auf ganze Strings von Worttrennern, wenn man will.
Code:
;CMD parse test by f.brandis
;
DEFTYPE.w
;parsetest cmds
cmd$="dump from %s to %d a b cde 4 6 jj m , . ."
NPrint ">",cmd$,"<"
Function.w stripnparse{inp$} ;recursive!
SHARED nums
inp$=StripLead$(inp$,32) ;strip leading SPC
If inp$="" Then Function Return0 ;nothing left!
spc1.w=Instr(inp$," ") ;another separator?
If spc1>1 ;any SPC at the end of this inp$?
arg1$=Mid$(inp$,spc1)
out$ =Left$(inp$,spc1-1)
Gosub _strpnprsprt
ok=stripnparse{arg1$} ;down the rabbit hole...
Else ;rest is an arg.
out$=inp$
Gosub _strpnprsprt
EndIf
Function Return nums ;global count
_strpnprsprt:
nums+1
NPrint "Arg"+Str$(nums)+": >",out$,"<"
Return
End Function
NPrint "#args: ",stripnparse{cmd$}
MouseWait
End
CloseEd