Seite 1 von 1
Tools3 Token() von hinten
Verfasst: Di, 29. Aug 2017 10:52
von Manfred
mit der Funktion Token() aus den Tools3 kann man sich von links nach rechts die Token geben lassen nach einem bestimmten Trennzeichen. Ich müßte das aber andersherum haben, also von rechts nach links durchsucht. Hat jemand eine Idee, wie man das lösen kann?
Re: Tools3 Token() von hinten
Verfasst: Di, 29. Aug 2017 10:56
von Tom
Du hast doch eXpress++, oder? Roger hat eine Funktion "DC_TokenArray()" geschrieben, die erzeugt ein Array mit allen Tokens. Das letzte (Len(a)) wäre dann das, das Du suchst.
Re: Tools3 Token() von hinten
Verfasst: Di, 29. Aug 2017 11:13
von Manfred
Ah, DAnke Tom. Wußte ich nicht.
Re: Tools3 Token() von hinten
Verfasst: Di, 29. Aug 2017 11:49
von Tom
Gerne. Übrigens auch eine lässige Funktion, um Text-Importdaten weiterzuverarbeiten.
Re: Tools3 Token() von hinten
Verfasst: Di, 29. Aug 2017 21:24
von DelUser01
"String to Array" mit Tools3:
Code: Alles auswählen
cText := "bla1;bla2;bla3"
aErg := GsStringToArrToken( @cText , ";" , .F. ,0 , .T. )
? Var2CHar( aErg ) // => {"bla1","bla2","bla3"}
Function StringToArrToken( crText , cToken , lUpper , nArrLen , lSIngle )
Local aBegriffe := {}
Local cWord
Local lArrLen := .F.
If lSingle == NIL
lSingle := .F.
EndIf
If nArrLen == NIL
nArrLen := 0
ElseIf nArrLen >= 1
lArrLen := .T.
EndIf
If lUpper
crText := Upper( crText )
cToken := Upper( cToken )
EndIf
TokenInit( @crText , cToken )
Do While ! TokenEnd()
cWord := TokenNext( @crText )
cWord := AllTrim( cWord )
If ! Empty( cWord )
If lSingle
AAdd( aBegriffe , cWord )
Else
AAdd( aBegriffe , { cWord , .F. } )
EndIf
EndIf
EndDo
If lArrLen
Do While Len( aBegriffe ) < nArrLen
If lSingle
AAdd( aBegriffe , "" )
Else
AAdd( aBegriffe , { "" , .F. } )
EndIf
EndDo
EndIf
Return( aBegriffe )