INSTR

Aus C64-Wiki
Zur Navigation springenZur Suche springen
INSTR
Syntax: INSTR(<Zeichenkette>, <Suchstring>[, <Startposition>])
Parameter
<Zeichenkette>: Zeichenkettenausdruck
<Suchstring>: Zeichenkettenausdruck
<Startposition>: numerischer Ausdruck im Wertebereich von 1 bis 255
Einordnung
Typ: numerische Funktion
Kontext: Stringberarbeitung
Aufgabe: Position eines Teilstrings in einer Zeichenkette suchen
Abkürzung: inS
Token: $d4 (212)
Verwandte Befehle
LEN

Anmerkung: Dieser Artikel beschreibt die BASIC-Funktion INSTR ab Commodore BASIC V3.5 oder höher.

Die Funktion INSTR sucht nach Teilstrings in Zeichenketten und liefert die Position des ersten Auftretens.

Die Funktion hat folgende Argumente:

  • <Zeichenkette>: Zeichenkette, in der gesucht wird. Fehlt das Argument, wird ein ?SYNTAX ERROR ausgegeben, ist es keine Zeichenkette, ein ?TYPE MISMATCH ERROR.
  • <Suchstring>: Zeichenkette, die den zu findenden Text enthält. Fehlt das Argument, wird ein ?SYNTAX ERROR ausgegeben, ist es keine Zeichenkette, ein ?TYPE MISMATCH ERROR.
  • <Startposition>: Position in der zu durchsuchenden Zeichenkette, ab der gesucht wird. Dieses Argument ist optional, voreingestellt ist 1. Ist das Argument keine Zahl, wird ein ?TYPE MISMATCH ERROR ausgegeben. Der Wert muss im Bereich von 1 bis 255 liegen, ansonsten wird ein ?ILLEGAL QUANTITY ERROR angezeigt.

Wird der Suchstring ab der angegebene Position gefunden, wird die Startposition in der Zeichenkette als Ergebnis zurückgegeben.
In folgenden Fällen wird 0 als Ergebnis geliefert:

  • Der Suchstring wird nicht gefunden.
  • Die Zeichenkette, in der gesucht wird, ist leer.
  • Der Suchstring ist leer.
  • Die Startposition ist höher als die Länge der Zeichenkette.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Auswahlmenü mit Buchstabenkurzwahl und eleganter Verzweigung auf die einzelnen Menüfunktionen:

100 DO
110 :SCNCLR:PRINT SPC(10)"ARTIKELVERWALTUNG":PRINT
120 :PRINT SPC(5)"(N)EUEN ANLEGEN"
130 :PRINT SPC(5)"(A)NZEIGEN UND AENDERN"
140 :PRINT SPC(5)"(D)RUCKEN DER GESAMTLISTE"
150 :PRINT:PRINT "WAHL?";
160 :DO
170 : GETKEY A$
180 : W=INSTR("NAD",A$)
190 :LOOP UNTIL W
200 :ON W GOSUB 1000,2000,3000
210 LOOP
...
1000 REM ARTIKEL ANLEGEN
...
1999 RETURN
2000 REM ARTIKEL ANZEIGEN/AENDERN
...
2999 RETURN
3000 REM ARTIKELLISTE AUF DRUCKER AUSGEBEN
...
3999 RETURN

Kommandos für Parser einer Programmiersprache ermitteln, z.B. für 6502-Assembler-Mnemonics:

100 REM INITIALISIERUNG
110 MN$="ADCANDASLBCCBCSBEQBITBMIBNEBPLBRKBVCBVSCLC..."
111 REM MNEMONIC IST IMMER 3 ZEICHEN LANG, AN POSITION 1, 4, 7, ...
...
1000 REM FINDE 6502 ASSEMBLER MNEMONIC IN I$
1001 REM RETOUR: B ... BEFEHLSNUMMER
1010 P=INSTR(MN$,I$)
1020 IF P = 0 OR INT((P-1)/3)*3 <> P-1 THEN P = -2: REM UNBEKANNT
1030 B=(P+2)/3: REM BEFEHLSNUMMER >=1 ODER 0 WENN UNBEKANNT
1040 RETURN