Betrachten Sie das folgende Snippet:
"12-18" -Contains "-"
Sie würden denken, dass dies bewertet wird true
, aber es tut nicht. Dies wird false
stattdessen ausgewertet . Ich bin mir nicht sicher, warum das passiert, aber es tut es.
Um dies zu vermeiden, können Sie stattdessen Folgendes verwenden:
"12-18".Contains("-")
Jetzt wird der Ausdruck als wahr ausgewertet.
Warum verhält sich das erste Code-Snippet so? Gibt es etwas Besonderes, mit -
dem man nicht gut spielt -Contains
? In der Dokumentation wird nichts darüber erwähnt.
"12-18".Contains("-")
Contains
Powershell-Operator und der.Contains()
.NET-String
Methode klären muss .-Match
wird Regex verwendet. Das bedeutet, dass der Zeichenfolgenparameter ein regulärer Ausdruck ist, keine normale Zeichenfolge. Gibt beispielsweise"hello" -Match "."
true zurück, da"."
es sich um einen regulären Ausdruck handelt, in dem ein '.' passt zu jedem Zeichen. So überprüfen Sie, ob eine Zeichenfolge einen"hello" -Match "\."
-Contains
ist eigentlich ein Sammlungsbetreiber. Es ist wahr, wenn die Sammlung das Objekt enthält. Es ist nicht auf Zeichenfolgen beschränkt.-match
und-imatch
sind String-Matcher für reguläre Ausdrücke und legen automatische Variablen für die Verwendung mit Captures fest.-like
,-ilike
Sind SQL-ähnliche Matcher.quelle
Sie können verwenden
like
:Oder
split
fürcontains
:quelle
like
ist am besten oder zumindest am einfachsten.match
wird für Regex-Vergleiche verwendet.Referenz: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6
quelle