StringGetPos

Ruft die Position einer bestimmten Teilzeichenkette innerhalb einer Zeichenkette ab.

Veraltet: Dieser Befehl ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die InStr-Funktion.

StringGetPos, AusgabeVar, EingabeVar, SuchText , Vorkommen, Offset

Parameter

AusgabeVar

Name der Ausgabevariable, in der die abgerufene Position relativ zum ersten Zeichen von EingabeVar gespeichert werden soll. Position 0 ist das erste Zeichen.

EingabeVar

Name der Eingabevariable, die durchsucht werden soll. Umschließen Sie den Namen nicht mit Prozentzeichen, es sei denn, Sie wollen den Inhalt der Variable als Namen verwenden.

SuchText

Die Zeichenkette, nach der gesucht werden soll. Die Suche erfolgt nicht Groß-/Kleinschreibung-sensitiv, es sei denn, StringCaseSense wurde eingeschaltet.

Vorkommen

Wenn leer oder weggelassen, wird standardmäßig L1 verwendet. Andernfalls geben Sie eine der folgenden Optionen an, um zu beeinflussen, welches Vorkommen gefunden wird, wenn SuchText mehrfach in EingabeVar vorkommt.

Ln: EingabeVar wird von links nach rechts durchsucht, um die n-te Übereinstimmung zu finden.

Rn: EingabeVar wird von rechts nach links durchsucht, um die n-te Übereinstimmung zu finden. Wenn n weggelassen wird (oder wenn Vorkommen 1 ist), wird standardmäßig R1 verwendet.

Um z.B. das vierte Vorkommen von rechts zu finden, geben Sie R4 an. Hinweis: Wenn n kleiner gleich 0 ist, wird keine Übereinstimmung gefunden.

Offset

Wenn leer oder weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie die Anzahl der Zeichen auf der linken oder rechten Seite an (abhängig vom obigen Parameter), die übersprungen werden sollen. Zum Beispiel würde das Folgende die Suche beim zehnten Zeichen von links beginnen: StringGetPos, AusgabeVar, EingabeVar, abc, , 9. Dieser Parameter kann ein Ausdruck sein.

ErrorLevel

ErrorLevel wird auf 1 gesetzt, wenn das angegebene Vorkommen von SuchText in EingabeVar nicht gefunden werden konnte, andernfalls auf 0.

Bemerkungen

Bei diesem und allen anderen Befehlen darf AusgabeVar die gleiche Variable wie EingabeVar sein.

Im Gegensatz zu StringMid und InStr() ist 0 als Position des ersten Zeichens für StringGetPos definiert.

Die abgerufene Position bezieht sich immer auf das erste Zeichen von EingabeVar, egal ob Vorkommen und/oder Offset angegeben sind. Wenn z.B. die Zeichenkette "abc" in 123abc789 gefunden wird, ist die gemeldete Position immer 3, unabhängig von der verwendeten Suchmethode.

Wenn das angegebene Vorkommen von SuchText in EingabeVar nicht existiert, wird AusgabeVar auf -1 und ErrorLevel auf 1 gesetzt.

Mit SplitPath kann ein Dateipfad auf einfache Weise in Verzeichnis, Dateiname und Erweiterung aufgeteilt werden.

Die internen Variablen A_Space und A_Tab enthalten ein Leer- bzw. Tabulatorzeichen. Sie sind nützlich, um nach Leer- und Tabulatorzeichen zu suchen, die entweder einzeln oder am Anfang oder Ende von SuchText vorkommen.

InStr(), RegExMatch(), IfInString, If Var [not] in/contains VergleichListe, StringCaseSense, StringReplace, SplitPath, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, If Var is [not] Typ

Beispiele

Ermittelt und analysiert die Position einer Teilzeichenkette.

Heuhaufen := "abcdefghijklmnopqrs"
Nadel := "def"
StringGetPos, Pos, Heuhaufen, %Nadel%
if (Pos >= 0)
    MsgBox, Die Zeichenkette wurde auf Position %Pos% gefunden.

Teilt den vollständigen Pfadnamen einer Datei in einzelne Komponenten auf. Beachten Sie, dass dies mit StrSplit(), StringSplit oder einer parsenden Schleife viel einfacher wäre, daher dient das folgende Beispiel nur der Veranschaulichung.

FileSelectFile, Datei, , , Wählen Sie einen Dateinamen in einem tief verschachtelten Ordner aus:
if (Datei != "")
{
    Pos_vorher := StrLen(Datei)
    Pos_vorher += 1 ; Position auf das Zeichen nach dem letzten Zeichen setzen.
    Loop
    {
        ; Sucht nach dem N-ten Vorkommen, von rechts beginnend:
        StringGetPos, Pos, Datei, \, R%A_Index%
        if ErrorLevel
            break
        Länge := Pos_vorher - Pos - 1
        Pos_vorher := Pos
        Pos += 2  ; Für die Verwendung mit StringMid anpassen.
        StringMid, Pfad_Komponente, Datei, %Pos%, %Länge%
        MsgBox Pfadkomponente Nr. %A_Index% (von rechts) ist:`n%Pfad_Komponente%
    }
}