INSTR
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
AUTO | BACKUP | BOX | CHAR | CIRCLE | COLLECT | COLOR | COPY | DEC | DELETE | DIRECTORY | DLOAD | DO | DRAW | DS | DS$ | DSAVE | EL | ELSE | ER | ERR$ | EXIT | GETKEY | GRAPHIC | GSHAPE | HEADER | HELP | HEX$ | INSTR | JOY | KEY | LOCATE | LOOP | MONITOR | PAINT | PRINT USING | PUDEF | RCLR | RDOT | RENAME | RENUMBER | RESUME | RGR | RLUM | SCALE | SCNCLR | SCRATCH | SOUND | SSHAPE | TRAP | TROFF | TRON | UNTIL | VOL | WHILE