HOWTO · PowerShell
Überprüfen Sie, ob eine Zeichenfolge in PowerShell leer ist
Der Artikel behandelt eine Zeichenfolgenmethode, die in PowerShell verwendet werden kann, um festzustellen, ob eine bestimmte Zeichenfolge null oder leer ist.
Auf dieser Seite
Entscheiden Sie beim Prüfen einer Eingabe in PowerShell zuerst, welchen Wert Sie zurückweisen möchten: $null, eine Zeichenfolge der Länge null ('') oder Text, der nur aus Leerraum besteht. Das sind unterschiedliche Zustände. Verwenden Sie [string]::IsNullOrEmpty() für die ersten beiden, eine Wahrheitswertprüfung, wenn das bedingte Verhalten von PowerShell gewünscht ist, und eine Prüfung der Länge nach dem Trimmen, wenn Eingaben, die nur aus Leerraum bestehen, ebenfalls als leer gelten sollen.
$null, leere Zeichenfolgen und Leerraum unterscheiden
$null steht für keinen Wert und ist keine Zeichenfolge. Eine leere Zeichenfolge hat null Zeichen. Eine Zeichenfolge, die nur aus Leerraum besteht, etwa ' ', enthält ein oder mehrere Zeichen, auch wenn sie leer aussieht. Bei einem gewöhnlichen Zugriff auf eine PowerShell-Variable ergibt auch eine nicht zugewiesene Variable $null.
Wählen Sie die Prüfung passend zur Eingaberegel. Ein Pflichtname sollte beispielsweise zurückgewiesen werden, wenn er null, leer oder nur aus Leerraum besteht. Wenn Leerzeichen dagegen eine Bedeutung haben, sollten Sie sie nicht automatisch entfernen.
[string]::IsNullOrEmpty() für Prüfungen auf null oder leer verwenden
Die statische Methode [string]::IsNullOrEmpty($value) gibt bei $null oder einer Zeichenfolge der Länge null den Wert true zurück. Leerzeichen behandelt sie nicht als leer. Sie ist eine klare Standardwahl, wenn sowohl fehlende Werte als auch Zeichenfolgen ohne Zeichen unzulässig sind.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
$value = 'PowerShell'
if ([string]::IsNullOrEmpty($value)) {
'No value supplied.'
} else {
"Value: $value"
}
Dieses Beispiel gibt Value: PowerShell aus und durchläuft für den zugewiesenen Wert den Zweig für nicht leere Werte. Das Label Value bleibt im unveränderten Beispiel englisch.
Wahrheitswerte von PowerShell für kurze Prüfungen verwenden
PowerShell behandelt $null und '' in einer Bedingung als false. Daher ist if (-not $value) eine kurze Möglichkeit, beide Fälle zu behandeln. Eine Zeichenfolge mit Leerzeichen ist dagegen true. Diese Prüfung ist praktisch, wenn ihr Verhalten zur Aufgabe passt; sie bedeutet nicht, dass die Zeichenfolge sichtbare Zeichen enthält.
So steht die Entscheidung direkt neben dem geprüften Wert. Verwenden Sie diese Form, wenn das Skript unmittelbar die bedingte Umwandlung von PowerShell nutzen soll und keine gesonderte Klassifizierung nötig ist. In einem echten Skript kann der true-Zweig zur Eingabe auffordern, einen Vorgang überspringen oder einen Standardwert auswählen; der andere Zweig kann mit dem übergebenen Wert fortfahren. Richten Sie die Aktion im Zweig nach der Regel Ihres Programms aus. Verwenden Sie die oben genannte Methode, wenn die Bedingung auf einen Blick erkennbar sein soll. Das Beispiel verwendet einen typischen Textwert und gibt aus, welcher Zweig ausgewählt wird.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
$value = 'PowerShell'
if (-not $value) {
'Falsy value.'
} else {
'Truthy value.'
}
Bei dieser Bedingung gelangt eine Zeichenfolge mit Leerzeichen in den truthy-Zweig. Verwenden Sie eine gezieltere Prüfung, wenn Leerzeichen als leer gelten sollen.
Eine Zeichenfolge mit einer leeren Zeichenfolge vergleichen oder ihre Länge prüfen
Verwenden Sie $value -eq '', wenn Sie direkt mit einer Zeichenfolge der Länge null vergleichen möchten. Damit wird Text, der nur aus Leerraum besteht, nicht automatisch als leer eingestuft. Für eine Prüfung der Zeichenanzahl können Sie $value.Length -eq 0 verwenden. Schützen Sie den Zugriff auf .Length jedoch mit einer Prüfung auf $null:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
if ($null -ne $value -and $value.Length -eq 0) {
'The value is an empty string.'
}
Die Schutzprüfung verhindert den Zugriff auf eine Eigenschaft eines Nullwerts. Wenn die Regel auch null einschließt, drückt [string]::IsNullOrEmpty() diese Absicht direkter aus.
Zeichenfolgen, die nur aus Leerraum bestehen, gesondert prüfen
Wenn Eingaben, die nur aus Leerraum bestehen, als leer gelten sollen, trimmen Sie die Zeichenfolge und prüfen Sie anschließend ihre Länge. Beim Trimmen wird Leerraum am Anfang und Ende entfernt. Die ursprüngliche Variable wird dadurch nicht geändert, solange Sie das Ergebnis nicht zuweisen.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
$value = ' '
if ([string]::IsNullOrEmpty($value) -or $value.Trim().Length -eq 0) {
'The value is null, empty, or whitespace-only.'
}
Die erste Bedingung wird bei $null kurzgeschlossen. Daher wird .Trim() nur für einen Wert aufgerufen, der nicht null ist. Mit diesem Muster werden Nullwerte, Zeichenfolgen der Länge null und reine Leerraumzeichenfolgen gemeinsam erfasst. Wenn Sie diese Fälle unterscheiden müssen, prüfen Sie sie einzeln, statt sie in einer Bedingung zusammenzufassen.
Mehrere Zeichenfolgen gemeinsam prüfen
Verwenden Sie -or, wenn jeder fehlende Wert denselben Zweig auslösen soll, und -and, wenn alle Werte die Bedingung erfüllen müssen. Die folgende Bedingung erkennt beispielsweise, ob eine der beiden Eingaben null oder leer ist:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
$firstName = 'Ada'
$lastName = ''
if ([string]::IsNullOrEmpty($firstName) -or [string]::IsNullOrEmpty($lastName)) {
'At least one name is missing.'
} else {
'Both names are present.'
}
Hier wird der Zweig für fehlende Werte ausgewählt, weil $lastName null Zeichen enthält. Ersetzen Sie -or nur dann durch -and, wenn beide Werte null oder leer sein müssen, damit dieser Zweig ausgeführt wird. Sollen bei einer der beiden Entscheidungen auch reine Leerraumzeichenfolgen berücksichtigt werden, wenden Sie die Prüfung nach dem Trimmen auf jeden Wert an.