StringGetPos

Ermittelt die Position einer bestimmten Teilzeichenkette innerhalb einer Zeichenkette.

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

StringGetPos, AusgabeVar, EingabeVar, Suchtext , L#|R#, Offset

Parameter

AusgabeVar

Name der Variable, in der die ermittelte Position relativ zum ersten Zeichen von EingabeVar gespeichert werden soll. Das erste Zeichen ist bei StringGetPos die Position 0 und bei InStr() die Position 1.

EingabeVar

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

Suchtext

Der zu suchende Text. Die Suche nach einem Treffer unterscheidet nicht zwischen Groß- und Kleinschreibung, sofern StringCaseSense deaktiviert ist.

L#|R#

Das hat Einfluss darauf, welches Vorkommen gefunden wird, falls Suchtext mehrmals in EingabeVar vorkommt. Fehlt dieser Parameter, erfolgt die Suche in EingabeVar von links nach rechts, bis die erste Übereinstimmung gefunden wird. Falls dieser Parameter 1 oder R ist, erfolgt die Suche in EingabeVar von rechts nach links, bis die erste Übereinstimmung gefunden wird.

Um eine andere Übereinstimmung als die erste zu finden, gibt man den Buchstaben L oder R gefolgt von der Nummer des Vorkommens an. Zum Beispiel wird mit r4 das vierte Vorkommen von rechts gefunden. Hinweis: Falls die Nummer kleiner gleich 0 ist, kann keine Übereinstimmung gefunden werden.

Offset

Die Anzahl der Zeichen auf der linken oder rechten Seite (abhängig vom obigen Parameter), die übersprungen werden sollen. Fehlt dieser Parameter, gilt standardmäßig 0. Das folgende Beispiel beginnt die Suche beim 10. Zeichen von links: StringGetPos, AusgabeVar, EingabeVar, abc, , 9. Dieser Parameter kann ein Ausdruck sein.

ErrorLevel

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

Bemerkungen

Im Gegensatz zu StringMid und InStr() gilt bei StringGetPos die 0 als Position des ersten Zeichens.

Die abgerufene Position bezieht sich immer auf das erste Zeichen von EingabeVar, egal ob L#|R# und/oder Offset angegeben sind. Wenn zum Beispiel 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 innerhalb von 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% können genutzt werden, um ein einzelnes Leerzeichen oder ein einzelnes Tabulatorzeichen anzugeben. Sie sind nützlich, um nach Leer- und Tabulatorzeichen zu suchen, die entweder einzeln oder am Anfang oder Ende von Suchtext vorkommen.

Siehe auch

InStr(), RegExMatch(), IfInString, if Var in/contains Vergleichsliste, StringCaseSense, StringReplace, SplitPath, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, if Var is Typ

Beispiele

Heuhaufen = abcdefghijklmnopqrs
Nadel = def
StringGetPos, Pos, Heuhaufen, %Nadel%
if Pos >= 0
    MsgBox, Die Zeichenkette wurde auf Position %Pos% gefunden.
; Beispiel #2:
; Teilt den vollständigen Pfadnamen einer Datei in einzelne Komponenten auf.
; Beachten Sie, dass das mit StringSplit oder mit einer
; Parsende Schleife viel einfacher ist - das folgende Skript dient nur zur Veranschaulichung.
FileSelectFile, Datei, , , Wählen Sie einen Dateinamen in einem tief verschachtelten Ordner aus:
if Datei <>
{
    StringLen, Pos_vorher, Datei
    Pos_vorher += 1 ; Setzt die Position auf das Zeichen, dass nach dem letzten Zeichen erfolgt.
    Loop
    {
        ; Sucht nach dem Nten Vorkommen, beginnend von rechts:
        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 #%A_Index% (von rechts) ist:`n%Pfad_Komponente%
    }
}