| |
|
|
- Page 1 - |
|
RudiB. | Habe mal ein bischen mit String-Funktionen rumgebastelt. Hier das Ergebnis:
FindCharAll
gibt alle Positionen des Zeichens / Zeichenkette aus TestString$ Aufruf: FindCharAll TestString$,Suchzeichen/kette,leeres Int-Array Rückgabewert: Array mit den Positionen im String aller gefundenen Zeichen.
CountChar
zählt alle Suchzeichen/ketten aus TestString$ Aufruf: CountChar TestString$,Suchzeichen/kette Rückgabewert: Anzahl der gesuchten Zeichen im String.
FindLastChar
gibt die Position des letzten gesuchten Zeichen/kette in TestString$ an- Aufruf: FindLastChar TestString$, Suchzeichen/kette Rückgabewert: Position im TestString
FindPosChar
Finde Position des N.ten Zeichen/Zeichenkette im TestString$ Aufruf: FindPosChar TestString$,N.tes Zeichen,Such_Zeichen$ Rückgabewert: Postion des N.ten Zeichens/kette im TestString.
Hier ein kleines Testprogramm...
CLS
'Befehle
'--------------
'findcharall(zeichen) >> Array - Anzahl der zeichen / Position des Zeichens in STRING
'findfirstchar(zeichen) >> position des zeichens im STRING --- wie INSTR
'findlastchar(zeichen) >> position des letzten zeichens im STRING
'findposchar(zeichen,z.B das 3.te zeichen im STRING)
'countchar(zeichen) >> anzahl der zeichen im STRING
Declare TestString$,_Suchzeichen%[],Such_Zeichen$,z%,zaehler%,last&
TestString$="Im solito Dezimalsystem werden die Ziffern 0 bis 9 verwendet. Im Dualsystem hingegen werden Zahlen nur mit den Ziffern des Wertes null und eins dargestellt."
CLS
' Finde alle Zeichen/Zeichenketten in Teststring
Such_Zeichen$="f"
FindCharAll TestString$,Such_Zeichen$,_Suchzeichen%[]
Print "Befehl: FindCharAll"
Print
Print "gibt alle Positionen des Zeichens / Zeichenkette aus TestString$"
Print
Print "Aufruf -- FindCharAll TestString$,Such_Zeichen$,_Suchzeichen%[] (leeres Array)"
Print
Print "TestString :"+TestString$
Print "Suchzeichen ist: -"+Such_Zeichen$+"-"
Print
Print
Print "Taste drücken...."
auswerten
Waitinput
CLS
' Zaehle alle Zeichen/Zeichenkette aus Teststring
zaehler%=CountChar(TestString$,"e")
Print "Befehl: CountChar"
Print
Print "Zählt alle gesuchten Zeichens / Zeichenkette aus TestString$"
Print
Print "Aufruf -- CountChar TestString$,Such_Zeichen$"
Print
Print "TestString :"+TestString$
Print "Suchzeichen ist: "+"-e-"
Print zaehler%+ " mal ist das -e- im Teststring enthalten."
Print
Print
Print "Taste drücken...."
Waitinput
CLS
' Finde Position per das letzte Zeichen/Zeichenkette in Teststring
zaehler%=FindLastChar(TestString$,"f")
Print "Befehl: FindLastChar"
Print
Print "gibt letzte Positionen des gesuchten Zeichens / Zeichenkette aus TestString$"
Print
Print "Aufruf -- FindLastChar TestString$,Such_Zeichen$"
Print
Print "TestString :"+TestString$
Print "Suchzeichen ist: "+"-f-"
print "das letzte Zeichen/Zeichenkette -f- ist an Position "+str$(zaehler%)+" im Testsrting."
Print
Print
Print "Taste drücken...."
Waitinput
CLS
' Finde 3.tes Zeichen/Zeichenkette im TestString
zaehler%=FindPosChar(TestString$,3,"m")
Print "Befehl: FindPosChar"
Print
Print "Finde N.te Zeichen/Zeichenkette im TestString$"
Print
Print "Aufruf -- FindPosChar TestString$,N.tes Zeichen,Such_Zeichen$"
Print
Print "TestString :"+TestString$
Print "N.tes Zeichen ist 3"
Print "Suchzeichen ist: "+"-m-"
print "das 3.te gesuchte Zeichen/Zeichenkette -m- ist an Position "+str$(zaehler%)+" im Testsrting."
Print
Print
Print "Für Ende Taste drücken...."
waitinput
End
'--------------------------------------------------------------------------------------------
Proc CountChar
Parameters _String$,_Zeichen$
Declare _pos&,_zaehler&
_pos&=0
_zaehler&=0
Whileloop LEN(_String$)
_pos&=Instr(_Zeichen$,_String$)
If _pos&>0
Inc _zaehler&
Else
Break
EndIf
_String$=Right$(_String$, Len(_String$)-_pos&)
EndWhile
Return _zaehler&
EndProc
Proc FindCharAll
Parameters _String$,_Zeichen$,_Char%[]
Declare _pos&,_zaehler&,Array_zaehler&
_pos&=0
_zaehler&=0
Array_zaehler&=0
Whileloop LEN(_String$)
Inc Array_zaehler&
_pos&=Instr(_Zeichen$,_String$)
If _pos&>0
_zaehler&=_zaehler&+_pos&
_Char%[Array_zaehler&]=_zaehler&
Else
Break
EndIf
_String$=Right$(_String$, Len(_String$)-_pos&)
EndWhile
Return _Char%[]
EndProc
Proc FindLastChar
Parameters _String$,_Zeichen$
Declare _Zeichen&[],_pos&,_Char%[],_zaehler&
Whileloop LEN(_String$)
_pos&=Instr(_Zeichen$,_String$)
If _pos&>0
_zaehler&=_zaehler&+_pos&
_String$=Right$(_String$, Len(_String$)-_pos&)
_pos&=0
Else
Break
EndIf
EndWhile
Return _zaehler&
EndProc
Proc FindPosChar
Parameters _String$,N_Zeichen&,_Zeichen$
Declare _pos&,_zaehler&,Array_zaehler&,_Char%[]
_pos&=0
_zaehler&=0
Array_zaehler&=0
Whileloop LEN(_String$)
Inc Array_zaehler&
_pos&=Instr(_Zeichen$,_String$)
If _pos&>0
_zaehler&=_zaehler&+_pos&
_Char%[Array_zaehler&]=_zaehler&
Else
Break
EndIf
If Array_zaehler&=N_Zeichen&
Break
Endif
_String$=Right$(_String$, Len(_String$)-_pos&)
EndWhile
Return _zaehler&
EndProc
Proc Auswerten
z%=0
Whileloop SizeOf(_Suchzeichen%[])-1
inc z%
print "Zeichen **"+mid$(TestString$,_Suchzeichen%[&loop],1)+"** Nr.:",z%,"An Position: ";_Suchzeichen%[&loop]
EndWhile
ArrDel _Suchzeichen%[],0,SizeOf(_Suchzeichen%[])-1'Arraygrösse wird auf 1 gesetzt.
EndProc
|
|
|
| Xprofan X4 Rudolf Beske / München
Hardware: NB Intel I9 - 16GByte RAM | 12.05.2021 ▲ |
|
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
p.specht
| %matchpos und das n. Matching ========================= Weils dazupasst, eine Info von RGH aus Sept. 2015 zur richtigen Handhabung der internen Variable %matchpos: "%matchpos zählt immer von der aktuellen Startposition aus! Folgendes proc liefert das gewünschte n-fach {'weitergeschaltete'} Verhalten":
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 19.05.2021 ▲ |
|
|
|
|