Articles

PowerShell-Zeichenfolge enthält

X

Datenschutz & Cookies

Diese Seite verwendet Cookies. Indem Sie fortfahren, stimmen Sie deren Verwendung zu. Erfahren Sie mehr, einschließlich der Kontrolle von Cookies.

Verstanden!

P

Wie können Sie überprüfen, ob eine PowerShell-Zeichenfolge ein Zeichen oder eine Teilzeichenfolge enthält?

Sie könnten versucht sein, dies zu versuchen:

PS> $s = ‚abcdefghd‘
PS> $s -contains ‚f‘
False

But –contains dient zum Arbeiten mit dem Inhalt von Arrays. Sie könnten also Folgendes tun:

PS> ($s.toCharArray()) -contains ‚f‘
True

Sie konvertieren implizit die Zeichenfolge ‚f‘, um den Vergleich durchzuführen. Ihr Vergleich ist eigentlich dieser

PS> ($s.toCharArray()) -enthält ‚f‘
True

Das ist in Ordnung für ein einzelnes Zeichen, aber wenn Sie eine Teilzeichenfolge testen möchten

PS> $s -enthält ‚def‘
False
PS> ($s.toCharArray()) -enthält ‚def‘
False

Dieser Ansatz funktioniert nicht.

Sie müssen die Indexof-Methode verwenden

PS> $s.Indexof(‚f‘)
5
PS> $s.Indexof(‚def‘)
3

Der zurückgegebene Wert ist die Position des ERSTEN Zeichens in der Teilzeichenfolge.

Sie können auch ein Array von Zeichen testen

PS> $a = ‚g‘,’j‘,’a‘
PS> $s.IndexOfAny($a)
0

Wieder erhalten Sie das ERSTE Zeichen in diesem Fall das ‚a‘

Denken Sie daran, dass PowerShell .NET basiert, also ist der erste Index 0

Lassen Sie uns einige Wiederholungen in unser Ziel bekommen

PS> $s = $s * 3

PS> $s
abcdefghijkabcdefghijkabcdefghijk

Sie haben auch die Möglichkeit, das LETZTE Vorkommen der Teilzeichenfolge

PS> $s.lastIndexOf(‚f‘)
27

PS> $s.LastIndexOfAny($a)
31

Dieses letzte ist das letzte ‚j‘ in der Zeichenfolge – es ist das letzte Vorkommen eines der Zeichen, mit denen Sie übereinstimmen möchten.

Wenn es keine Übereinstimmung gibt, erhalten Sie -1 zurückgegeben

PS> $s.indexOf(‚z‘)
-1
PS> $s.lastIndexOf(‚z‘)
-1

Anzeigen