If Var [not] in/contains VergleichListe

Prüft, ob der Inhalt einer Variable mit einem der Elemente in einer Liste übereinstimmt.

if Var in VergleichListe
if Var not in VergleichListe

if Var contains VergleichListe
if Var not contains VergleichListe

Parameter

Var

Name der Variable, deren Inhalt geprüft werden soll. Beim Operator "in" ist eine genaue Übereinstimmung mit einem der Listenelemente erforderlich. Der Operator "contains" ist toleranter: Mit diesem erfolgt bereits eine Übereinstimmung, wenn Var eines der Listenelemente als Teilzeichenkette enthält.

VergleichListe

Eine kommagetrennte Liste von Zeichenketten, die mit dem Inhalt von Var verglichen werden sollen. Alle Leer- und Tabulatorzeichen neben den Kommas sind relevant, d.h. sie sind Teil der Vergleichszeichenkette. Wenn VergleichListe z.B. ABC , XYZ ist, muss Var entweder ABC mit einem Leerzeichen am Ende oder XYZ mit einem Leerzeichen am Anfang enthalten, damit eine Übereinstimmung erfolgt.

Zwei aufeinanderfolgende Kommas ergeben ein direkt geschriebenes Komma. Zum Beispiel würde das Folgende ein direkt geschriebenes Komma nach dem Wort Zkette1 erzeugen: if Var in Zkette1,,,Zkette2. Entsprechend enthält die folgende Liste nur ein einzelnes Element mit einem direkt geschriebenen Komma dazwischen: if Var in einzelnes,,Element. Um ein leeres Element in die Liste einzufügen, machen Sie das erste Zeichen in der Liste zu einem Komma, z.B. if Var in ,Zkette1,Zkette2 (im Falle von "contains" bewirkt ein leeres Element immer eine Übereinstimmung, da jede Zeichenkette eine leere Zeichenkette enthält).

Da die Elemente in VergleichListe nicht als einzelne Parameter behandelt werden, kann die Liste komplett in einer Variable enthalten sein. Tatsächlich muss sie ganz oder teilweise in einer Variable enthalten sein, wenn ihre Länge 16383 Zeichen überschreitet, da dies die maximale Länge einer Skriptzeile ist. Zum Beispiel könnte VergleichListe aus %Liste1%,%Liste2%,%Liste3% bestehen, wobei jede der Unterlisten eine lange Liste von Elementen enthält.

Bei jedem einzelnen Element in der Liste, das länger als 16384 Zeichen ist, werden die überschüssigen Zeichen als neues Listenelement behandelt. Am besten sollten Sie vermeiden, solche Elemente einzufügen.

Bemerkungen

Der Vergleich erfolgt immer alphabetisch, nicht numerisch. Zum Beispiel würde die Zeichenkette "11" nicht mit dem Listenelement "11.0" übereinstimmen.

Der Operator "contains" entspricht der Verwendung von InStr() oder If[Not]InString, außer dass mehrere Vergleichszeichenketten unterstützt werden.

Mit StringCaseSense On kann der Vergleich Groß-/Kleinschreibung-sensitiv gemacht werden.

Wenn VergleichListe relativ lang ist, kann es via Fortsetzungsbereich in mehrere kurze Zeilen aufgeteilt werden, um die Übersichtlichkeit und Wartbarkeit des Skripts zu verbessern.

Die Operatoren "in" und "contains" werden in Ausdrücken nicht unterstützt. Verwenden Sie stattdessen If-Anweisungen wie z.B. if (Var ~= "i)\A(Wert1|Wert2)\z") für "in" oder if (Var ~= "i)Wert1|Wert2") für "contains", um das Verhalten dieser Operatoren zu simulieren.

If Var [not] between Min and Max, IfEqual/Greater/Less, IfInString, StringCaseSense, Blöcke, Else

Beispiele

Prüft, ob var die Dateiendung EXE, BAT oder COM ist.

if var in exe,bat,com
    MsgBox Die Dateiendung ist von einer ausführbaren Datei.

Prüft, ob var die Primzahl 1, 2, 3, 5, 7 oder 11 ist.

if var in 1,2,3,5,7,11 ; Vermeiden Sie Leerzeichen in der Liste.
    MsgBox %var% ist eine kleine Primzahl.

Prüft, ob var die Ziffer 1 oder 3 enthält.

if var contains 1,3  ; Beachten Sie hier, dass die Werte als Zeichenketten verglichen werden, nicht als Zahlen.
    MsgBox var enthält die Ziffer 1 oder 3 (var könnte auch eine 1, 3, 10, 21, 23, etc. sein)

Prüft, ob var eines der Elemente in MeineElementeListe ist.

if var in %MeineElementeListe%
    MsgBox %var% ist in der Liste.

Lässt den Benutzer eine Zeichenkette eingeben und prüft, ob sie das Wort Ja oder Nein ist.

InputBox, BenutzerEingabe, Bitte JA oder NEIN eingeben
if BenutzerEingabe not in ja,nein
    MsgBox Ihre Eingabe ist ungültig.

Prüft, ob aktiver_titel "Adressliste.txt" oder "Kundenliste.txt" enthält, und prüft, ob es "metapad" oder "Notepad" enthält.

WinGetTitle, aktiver_titel, A
if aktiver_titel contains Adressliste.txt,Kundenliste.txt
    MsgBox Eines der gewünschten Fenster ist aktiv.
if aktiver_titel not contains metapad,Notepad
    MsgBox Aber die Datei ist weder in Metapad noch in Notepad geöffnet.