Meistern Sie PowerShell-Strings: Verkettung, Aufteilen und mehr

Zeichenketten in PowerShell sind wahrscheinlich der am häufigsten verwendete Datentyp in PowerShell. Von der Anzeige von Nachrichten, der Aufforderung zur Eingabe oder dem Senden von Daten an Dateien ist es fast unmöglich, Skripte zu schreiben, ohne dass Zeichenketten beteiligt sind.

In diesem Artikel erfahren Sie, dass Zeichenketten nicht nur zum Lesen und Anzeigen gedacht sind. Sie können auch so manipuliert werden, dass sie dem Zweck der jeweiligen Aufgabe entsprechen, für die Sie das Skript schreiben. Wie beispielsweise das Ersetzen von Zeichen oder ganzen Wörtern, das Zusammensetzen von Zeichenketten zu einer neuen Zeichenkette oder sogar das Aufteilen einer Zeichenkette in mehrere Zeichenketten.

Verständnis von Zeichenketten

Nach der .NET-Definition von Zeichenkette – „Eine Zeichenkette ist eine sequenzielle Sammlung von Zeichen, die zur Darstellung von Text verwendet wird“. Zusammengefasst bedeutet dies, solange es eine Abfolge von Zeichen gibt, die einen Text bilden, gibt es eine Zeichenkette.

Definition von Systemzeichenketten in PowerShell

Zeichenketten werden definiert, indem eine Reihe von Zeichen in einfache oder doppelte Anführungszeichen eingeschlossen werden. Im Folgenden finden Sie Beispiele für eine Zeichenkette.

PS> 'Hello PowerShell - Today is $(Get-Date)'PS> "Hello PowerShell - Today is $(Get-Date)"

Zeichenketten sind tatsächlich System.Strings in .NET.

Wie Sie aus dem obigen Beispiel sehen können, ist die erste Zeichenkette mit einem einfachen Anführungszeichen und die zweite Zeichenkette mit einem doppelten Anführungszeichen eingeschlossen. Falls Sie sich fragen, der einzige Unterschied zwischen den beiden besteht darin, dass Zeichenketten in doppelten Anführungszeichen die Zeichenkettenexpansion unterstützen, während ein einfaches Anführungszeichen nur für wörtliche Zeichenketten steht.

Um das Konzept von einfachen gegenüber doppelten Anführungszeichen zu bestätigen, können Sie beide Zeichenketten aus dem obigen Beispiel in PowerShell einfügen.

Der Screenshot unten zeigt, dass eine einzelne in Anführungszeichen gesetzte Zeichenkette die exakte wörtliche Zeichenkette zurückgibt, die definiert wurde. Während die doppelt in Anführungszeichen gesetzte Zeichenkette die Zeichenkette mit dem Ausdrucksergebnis des Get-Date-Befehls zurückgibt.

Single Quote vs. Double-Quote String Output

Das oben gezeigte Ergebnis verdeutlicht den Unterschied, wann es angebracht ist, einfache oder doppelte Anführungszeichen zur Definition von Zeichenketten zu verwenden.

Das String-Objekt

Wie bereits in der vorherigen Sektion erwähnt, ist die Sammlung von Zeichen, die einen Text bilden, eine Zeichenkette. Der resultierende Wert der Zeichenkette ist das String-Objekt. Das String-Objekt ist ein .NET-Objekt vom Typ [System.String].

Und da System.String ein Objekt ist, verfügt es über Eigenschaften, auf die Sie mit dem Get-Member-Befehl zugreifen können. Im Folgenden fügen wir eine Variable in eine Zeichenkette mit doppelten Anführungszeichen ein.

PS> "Hello PowerShell - Today is $(Get-Date)" | Get-Member=

Der Screenshot unten zeigt den Typnamen und die partielle Liste der Eigenschaften des String-Objekts.

String Object properties

Konkatenation von PowerShell-Zeichenketten

Die Konkatenation von Zeichenketten wird als das Zusammenfügen von zwei oder mehr Zeichenketten beschrieben, wodurch im Wesentlichen ein Zeichenkettenobjekt aus mehreren separaten Zeichenkettenobjekten erstellt wird. Es gibt mehrere Methoden in PowerShell, um Zeichenketten zu konkatenieren. Jede Methode ist unterschiedlich, und welche Methode verwendet wird, hängt davon ab, wie Sie die Zeichenkettenkonkatenation implementieren möchten.

A typical example of using string concatenation in the real world is Active Directory user creation. Perhaps you’re creating a user creation script that takes the first name, last name, and department values from a list.

Mit der Zeichenkettenverkettung können Sie die Standardbenennungskonvention für den Namen, Anzeigenamen, Benutzernamen und E-Mail-Adresse formulieren. In diesem Beispiel arbeiten Sie mit den unten gezeigten Zeichenketten. Kopieren Sie diesen Code und fügen Sie ihn in Ihre PowerShell-Sitzung ein.

$domain = 'contoso.com'
$firstname = 'Jack'
$lastname = 'Ripper'
$department = 'Health'

Verwenden Sie die oben angegebenen Variablenwerte, um die folgenden Werte zu ermitteln, indem Sie Zeichenketten miteinander verketten.

  • Name = Vorname Nachname
  • Anzeigename = Vorname Nachname (Abteilung)
  • SamAccountName = Vorname.Nachname
  • E-Mail-Adresse = [email protected]

In den nächsten Abschnitten werden die oben aufgeführten Werte mithilfe der verschiedenen in PowerShell verfügbaren Methoden zur Zeichenkettenverkettung erstellt.

Beginnen wir!

Verwendung des PowerShell-Zeichenkettenverkettungsoperators

Programmiersprachen haben ihren eigenen Zeichenkettenverkettungsoperator zur Verkettung von Zeichenketten. Zum Beispiel ist in Visual Basic die Verkettungsmethode das Kaufmanns-Und-Zeichen (&). PowerShell hat auch seine eigene Verkettungsmethode, das Pluszeichen (+).

Mit dem Zeichenkettenverkettungsoperator können Sie Zeichenketten mit dem folgenden Code verketten.

## Name
$firstname + ' ' + $lastname
## Anzeigename
$firstname + ' ' + $lastname + ' (' + $department + ')'
## SamAccountName
$firstname + '.' + $lastname
## E-Mail-Adresse
$firstname + '.' + $lastname + '@' + $domain

Mit der PowerShell-String-Erweiterung

Die Verwendung der String-Erweiterung ist möglicherweise die Methode, die den kürzesten Code ergibt, wenn Zeichenketten konkateniert werden. Wie aus dem unten stehenden Code ersichtlich ist, müssen Sie die Zeichenketten lediglich so anordnen, wie sie erscheinen sollen, und sie in doppelte Anführungszeichen setzen.

# Verwendung der String-Erweiterung
## Name
"$firstname $lastname"
## Anzeigename
"$firstname $lastname ($department)"
## SamAccountName
"$firstname.$lastname"
## E-Mail-Adresse
"$firstname.$lastname@$domain"

Dann interpretiert und behandelt PowerShell die String-Erweiterung innerhalb des Zeichenketten mit doppelten Anführungszeichen, um die konkatenierte Zeichenkette als Ergebnis auszugeben. Sie können sich auf das unten stehende Beispielergebnis beziehen.

Using String Expansion

Verwendung des PowerShell-Formatoperators

Der Formatoperator (-f) wird hauptsächlich für zusammengesetzte Formatierung verwendet. Wichtig ist zu beachten, dass bei dieser Methode drei Teile verwendet werden -f.

Beachten Sie die dritte Zeile des unten stehenden Codes. "{0} {1}" stellt das Format und die Platzhalter dar. Die Zahlen in den geschweiften Klammern geben den Index der Zeichenkette in der Sammlung an, die an ihrer Stelle angezeigt werden soll. Die Anführungszeichen können ein- oder doppelte Anführungszeichen sein.

Die Eingabe der Zeichensammlung in diesem Beispiel wird durch $vorname,$nachname repräsentiert. Dies bedeutet, dass der Index der Variablen $vorname 0 ist, während $nachname 1 ist.

Schließlich ist -f der Ort zwischen dem Platzhalter und der Sammlung von Zeichenketten, die durch (-f) dargestellt werden.

## Name
"{0} {1}" -f $firstname,$lastname
## Anzeigename
"{0} {1} ({2})" -f $firstname,$lastname,$department
## SamAccountName
"{0}.{1}" -f $firstname,$lastname
## E-Mail-Adresse
"{0}.{1}@{2}" -f $firstname,$lastname,$domain

Der obige Code führt zu den unten gezeigten Ergebnissen.

Using the Format Operator

Verwendung des PowerShell-Operators -Join

Der Operator -Join kann auf zwei Arten verwendet werden, um Zeichenketten zu einer einzelnen Zeichenkette zu verbinden.

Die erste Möglichkeit, -Join zu verwenden, besteht darin, ihm das Array von Zeichenketten anzuhängen, die Sie zusammenfügen möchten. Der Operator -Join bietet keine Option zum Hinzufügen eines Trennzeichens. Alle Zeichenketten im Array werden ohne Trennzeichen zusammengeklebt.

-Join <String[]>

Die zweite Möglichkeit, den Operator -Join zu verwenden, besteht darin, das zu verwendende Trennzeichen anzugeben. Das Array von Zeichenketten wird zusammengefügt, wobei das angegebene Trennzeichen zwischen jede Zeichenkette eingefügt wird.

<String[]> -Join <Delimiter>

Zurück zum Ziel, Zeichenketten zu verbinden, demonstriert der folgende Code, wie der Operator -Join verwendet wird, um Zeichenketten zusammenzusetzen.

## Name
$firstname, $lastname -join ' '
## Anzeigename
$firstname,$lastname,"($department)" -join ' '
## SamAccountName
-join ($firstname,'.',$lastname)
## E-Mail-Adresse
-join ($firstname,'.',$lastname,'@',$domain)

Wenn Sie den obigen Beispielcode in PowerShell ausführen, sollten Sie eine ähnliche Ausgabe wie die unten gezeigte erwarten.

Using the PowerShell Join Operator

Die .NET String.Format()-Methode

Die .NET String.Format-Methode ist das .NET-Gegenstück zum PowerShell-Formatoperator. Sie funktioniert genauso wie der Formatoperator, bei dem das Format und die Platzhalter angegeben werden müssen.

## Name
[string]::Format("{0} {1}",$firstname,$lastname)
## Anzeigename
[string]::Format("{0} {1} ({2})",$firstname,$lastname,$department)
## SamAccountName
[string]::Format("{0}.{1}",$firstname,$lastname)
## E-Mail-Adresse
[string]::Format("{0}.{1}@{2}",$firstname,$lastname,$domain)

Der folgende Screenshot zeigt die String.Format-Methode in Aktion.

The .NET String.Format Method

Die .NET String.Concat()-Methode

Eine andere Methode, um Zeichenketten zu verknüpfen, besteht darin, die .NET String.Concat-Methode zu verwenden. Die .NET String.Concat-Methode ist das .NET-Gegenstück zum PowerShell-Zeichenkettenverknüpfungsoperator (+). Anstatt das +-Zeichen zum Verbinden von Zeichenketten zu verwenden, können Sie alle Zeichenketten innerhalb der Methode hinzufügen, wie dies hier möglich ist – [string]::Concat(string1,string2...).

## Name
[string]::Concat($firstname,' ',$lastname)
## Anzeigename
[string]::Concat($firstname,' ',$lastname,' (',$department,')')
## SamAccountName
[string]::Concat($firstname,'.',$lastname)
## E-Mail-Adresse
[string]::Concat($firstname,'.',$lastname,'@',$domain)

Der unten stehende Screenshot zeigt das Ergebnis des Aufrufs der .NET String.Concat-Methode. Sie können sehen, dass PowerShell die Zeichenfolgen string1 und string2 zusammengeführt hat.

Using the .NET String.Concat Method

Die .NET String.Join()-Methode

Die .NET String.Join-Methode ist das Gegenstück zum PowerShell Join-Operator (-join). Das Format für diese Methode ist [string]::Join(<Trennzeichen>,<Zeichenfolge1>,<Zeichenfolge2>,...).

Der erste Eintrag in der -Join-Methode ist immer das Trennzeichen. Die nachfolgenden Einträge sind die Zeichenfolgen, die Sie zusammenfügen möchten. Im folgenden Beispielcode sehen Sie dies. Beachten Sie, dass der erste Eintrag immer das Trennzeichen ist. Wenn Sie kein Trennzeichen hinzufügen möchten, können Sie dies so angeben -> ''.

## Name
[string]::Join(' ',$firstname,$lastname)
## Anzeigename
[string]::Join(' ',$firstname,$lastname,"($department)")
## SamAccountName
[string]::Join('',$firstname,'.',$lastname)
## E-Mail-Adresse
[string]::Join('',$firstname,'.',$lastname,'@',$domain)
The .NET String.Join Method

Aufteilen von PowerShell-Zeichenfolgen

In dem vorherigen Abschnitt haben Sie verschiedene Methoden zum Zusammenfügen von Zeichenfolgen gesehen. In diesem Abschnitt erfahren Sie, wie Sie PowerShell verwenden können, um Zeichenfolgen aufzuteilen. Das Aufteilen von Zeichenfolgen ist die umgekehrte Aktion der Konkatenation.

Sie können Zeichenfolgen in PowerShell auf zwei verschiedene Arten aufteilen – mit der split()-Funktion/Methode oder dem split-Operator.

Zeichenfolgen mit der split()-Methode aufteilen

Wenn Sie eine einfache Möglichkeit suchen, eine Zeichenfolge aufzuteilen und ein Array zu erstellen, dann verwenden Sie die split()-Methode. Die split()-Methode ist Teil jedes String-Objekts und kann eine Zeichenfolge in ein Array aufteilen, basierend auf einem nicht-regex-Zeichen.

Zum Beispiel, wenn Sie eine Zeichenfolge wie green|eggs|and|ham haben und ein Array wie @('green','eggs','and','ham') erstellen möchten, können Sie diese Zeichenfolge am Pipe-Symbol (|) aufteilen, wie im folgenden Code-Snippet.

$string = 'green|eggs|and|ham'
$string.split('|')

Sie werden dann sehen, dass PowerShell die Zeichenfolge in das gewünschte Array mit dem Pipe-Symbol aufgeteilt hat.

Die split()-Methode ist eine einfache Möglichkeit, Zeichenfolgen aufzuteilen, hat jedoch ihre Grenzen. Die split()-Methode erlaubt kein Aufteilen von Zeichenfolgen mittels regulärer Ausdrücke. Wenn Sie erweiterte Funktionen zum Aufteilen einer Zeichenfolge benötigen, müssen Sie den split-Operator verwenden.

Der -split-Operator

Der Hauptoperator, der zum Aufteilen von Zeichenfolgen in PowerShell verwendet werden kann, ist der -Split-Operator. Mit dem -Split-Operator werden Zeichenfolgen standardmäßig an Leerzeichen aufgeteilt oder an bestimmten Trennzeichen.

Hier ist die Syntax für den -Split-Operator zur Referenz. Beachten Sie den Unterschied zwischen dem unären und binären Aufteilen.

# Einzelne Aufteilung
-Split <String>
-Split (<String[]>)

# Zweifache Aufteilung
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]

In diesem Beispiel enthält die Variable $string den Wert einer einzelnen Zeichenfolge. Mit dem -Split-Operator wird die einzelne Zeichenfolge in ein PowerShell-Zeichenfolgenarray aufgeteilt. Die resultierende aufgeteilte Zeichenfolge wird in der Variable $split gespeichert.

## Aufteilung von Zeichenfolgen in Teilzeichenfolgen
# Weisen Sie der Variable $string einen Zeichenfolgenwert zu
$string = 'This sentence will be split between whitespaces'
# Teilen Sie den Wert von $string auf und speichern Sie das Ergebnis in der Variable $split
$split = -split $string
# Ermitteln Sie die Anzahl der resultierenden Teilzeichenfolgen
$split.Count
# Zeigen Sie die resultierenden Teilzeichenfolgen an
$split

Wie Sie aus dem obigen Ergebnis sehen können, wurde aus der ursprünglichen einzelnen Zeichenfolge eine Aufteilung in 7 Teilzeichenfolgen vorgenommen. Dies zeigt, wie PowerShell eine Zeichenfolge in ein Array aufteilt.

Das Zeichenfolgen-Trennzeichen

In dem vorherigen Beispiel hat der -Split-Operator die einzelne Zeichenfolge in mehrere Teilzeichenfolgen aufgeteilt, auch ohne ein Trennzeichen anzugeben. Das liegt daran, dass das Standardtrennzeichen des -Split-Operators ein Leerzeichen ist. Trennzeichen können jedoch auch Zeichen, Zeichenfolgen, Muster oder Skriptblöcke sein.

In diesem Beispiel wird als Trennzeichen das Semikolon ; verwendet.

## Aufteilen von Zeichenketten in Teilzeichenketten mit Trennzeichen
# Weisen Sie der Variablen $string einen Zeichenkettenwert zu
$string = 'This;sentence;will;be;split;between;semicolons'
# Teilen Sie den Wert von $string auf und speichern Sie das Ergebnis in der Variablen $split
$split = $string -split ";"
# Erhalten Sie die Anzahl der resultierenden Teilzeichenketten
$split.Count
# Zeigen Sie die resultierenden Teilzeichenketten an
$split

Wenn Sie den obigen Code in PowerShell testen, erhalten Sie das folgende Ergebnis.

Splitting a String into Substrings with Character Delimiter

Sie bemerken aus der obigen Ausgabe, dass das Trennzeichen in den resultierenden Teilzeichenketten komplett weggelassen wurde.

Falls Sie aus irgendeinem Grund das Trennzeichen beibehalten müssen, können Sie das Trennzeichen in Klammern setzen.

$split = $string -split "(;)"
$split.Count
$split

Nachdem Sie das Trennzeichen wie oben gezeigt geändert haben und den Code ausführen, erhalten Sie das folgende Ergebnis.

Splitting a string on semicolon

Das obige Ergebnis zeigt, dass die Trennzeichen nicht weggelassen werden und in die resultierenden Teilzeichenketten mitgezählt werden.

Das Zeichenketten-Trennzeichen

Zeichenketten können auch anhand einer anderen Zeichenkette als Trennzeichen aufgeteilt werden. In diesem Beispiel wird die Zeichenkette „day“ als Trennzeichen verwendet.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split "day"

Das Skriptblock-Trennzeichen

A scriptBlock as the delimiter enables the -Split operator to perform custom or complex splitting of strings.

In den vorherigen Beispielen wurde das Trennzeichen als Zeichen oder Zeichenkette verwendet, um die Zeichenketten aufzuteilen. Mit Hilfe eines Skriptblocks können Sie einen Ausdruck erstellen, der effektiv mehr als ein Trennzeichen verwendet.

Das folgende Beispiel verwendet den Ausdruck {$PSItem -eq 'e' -or $PSItem -eq 'y'}, was bedeutet, dass der String aufgeteilt wird, wenn das eingehende Zeichen 'e' oder 'a' ist.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split {$PSItem -eq 'e' -or $PSItem -eq 'y'}

Wenn Sie diesen Befehl ausführen, werden die Ausgabesubstrings aufgeteilt, wobei die im Ausdruck im Skriptblock angegebenen Trennzeichen verwendet werden.

Splitting a String into Substrings with a Script Block Delimiter

Das nächste Beispiel verwendet einen Skriptblock. Diesmal wird der Ausdruck überprüft, ob:

  • das eingehende Zeichen als Ganzzahl übergeben wird und
  • sein Wert größer als 1 ist.

Wenn das Ergebnis der Überprüfung wahr ist, verwendet der -Split-Operator dieses Zeichen als Trennzeichen. Außerdem wird eine Fehlerbehandlung hinzugefügt, um sicherzustellen, dass Fehler herausgefiltert werden.

$daysOfTheWeek= 'monday1tuesday2wednesday3thursday1friday4saturday8sunday'
$daysOfTheWeek -split {
    try {
        [int]$PSItem -gt 1
    }
    catch {
        #NICHTS TUN
    }
}

Nachdem der obige Code ausgeführt wurde, wird erwartet, dass der String an der Stelle aufgeteilt wird, an der der Zeichenwert als Ganzzahl mit einem Wert größer als 1 interpretiert werden kann. Unten ist die erwartete Ausgabe dargestellt.

Splitting a String into Substrings with a Script Block Delimiter

Der RegEx-Trenner

Standardmäßig verwendet der -Split-Operator eine RegEx-Übereinstimmung als Trennzeichen. Das bedeutet, dass Sie RegEx auch als Trennzeichen zum Aufteilen von Strings verwenden können.

In diesem nächsten Beispiel enthält der String Wortzeichen und Nicht-Wortzeichen. Das Ziel ist es, den String mit allen Nicht-Wortzeichen zu teilen. In RegEx werden Nicht-Wortzeichen durch \W dargestellt, während Wortzeichen, die diesen Zeichen entsprechen – [a-zA-Z0-9_] – durch \w dargestellt werden.

$daysOfTheWeek= 'monday=tuesday*wednesday^thursday#friday!saturday(sunday'
$daysOfTheWeek -split "\W"

Beschränkung von Teilzeichenketten

Es ist auch möglich, den -Split-Operator daran zu hindern, eine Zeichenkette in mehrere Teilzeichenketten aufzuteilen. Die Option, um das Ergebnis der Teilzeichenkette zu begrenzen, ist der Parameter <Max-Teilzeichenketten>.

Wenn Sie auf die -Split-Syntax verweisen, ist der Parameter <Max-Teilzeichenketten> der Parameter, der direkt auf den Parameter <Begrenzt> folgt. Die Syntax wird unten zur Referenz erneut angezeigt.

<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]

Unter Verwendung der oben genannten Syntax wurde der folgende Beispielcode geändert, um die Anzahl der Aufteilungen/Teilzeichenketten auf 3 zu begrenzen.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split ",",3

Bei Ausführung des oben stehenden Codes ergibt sich folgende Ausgabe. Wie Sie aus der Ausgabe unten sehen können, wurde die Zeichenkette nur in drei Teilzeichenketten aufgeteilt. Die übrigen Trennzeichen wurden übersprungen.

Limiting the Number of Substrings starting from the first 3 matched delimiters

Wenn Sie die Teilzeichenketten begrenzen möchten, aber in umgekehrter Reihenfolge, können Sie den Wert des Parameters <Max-Teilzeichenketten> auf einen negativen Wert ändern. In diesem nächsten Beispiel wird <Max-Teilzeichenketten> auf -3 geändert.

$daysOfTheWeek= 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -split ",",-3

Und als Ergebnis des obigen geänderten Codes wurde die Zeichenkette ab den letzten drei übereinstimmenden Trennzeichen aufgeteilt.

Limiting the Number of Substrings starting from the last 3 matched delimiters

Suchen und Ersetzen von Zeichenketten

In diesem Abschnitt erfahren Sie mehr über die beiden Methoden, die zur Suche und Durchführung einer PowerShell-Zeichenkettenersetzung verwendet werden können. Die Methode Replace() und der Operator -Replace.

Die Methode Replace()

Das String-Objekt verfügt auch über eine integrierte Methode, die bei der Durchführung von Such- und Ersetzungsvorgängen hilfreich sein kann – die Methode replace(). Die Methode replace() akzeptiert maximal vier Überladungen.

Die akzeptable Menge an Überladungen für die Methode replace() ist unten aufgeführt.

<String>.Replace(<original>, <substitute>[, <ignoreCase>][, <culture>])

Die einzigen erforderlichen Überladungen sind <original> und <substitute>. <ignoreCase> und <culture> sind optional.

Im folgenden Beispiel sucht der Code nach allen Vorkommen des Kommas (,) und ersetzt es durch ein Semikolon (;).

$daysOfTheWeek = 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek.Replace(',',';')

Neben dem Ersetzen eines einzelnen Zeichens können Sie die Methode replace() auch zum Suchen und Ersetzen von Zeichenketten verwenden. Der folgende Beispielcode ersetzt das Wort „Tag“ durch „Nacht“.

$daysOfTheWeek = 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek.Replace('day','NIGHT')
Replacing a matched string using the replace() method

Der Operator -Replace

Die Syntax für den Ersetzungsoperator wird unten angezeigt.

<string> -replace <original>, <substitute>

Mit der oben gezeigten Syntax ersetzt der folgende Beispielcode das Wort „Tag“ durch „Nacht“ mit dem Operator -replace.

$daysOfTheWeek = 'monday,tuesday,wednesday,thursday,friday,saturday,sunday'
$daysOfTheWeek -replace 'day','NIGHT'
Replacing a matched character with the -replace operator

Dieses nächste Beispiel verwendet eine RegEx-Übereinstimmung, um Zeichenfolgen mit dem -replace-Operator zu ersetzen. Der folgende Code sucht in der here-string nach der Zeichenfolge, die mit (#.) übereinstimmt, und ersetzt sie durch nichts.

$daysOfTheWeek = @'
1. Line 1
2. Line 2
3. Line 3
4. Line 4
5. Line 5
'@
$daysOfTheWeek -replace "\d.\s",""
Replacing a RegEx match using -replace

Extrahieren von Zeichenfolgen aus Zeichenfolgen

Das String-Objekt verfügt über eine Methode namens SubString(). Die Methode SubString() wird verwendet, um Zeichenfolgen innerhalb von Zeichenfolgen an bestimmten Positionen zu extrahieren. Die Syntax für die Methode SubString() wird unten angezeigt.

<String>.SubString(<startIndex>[,<length>])

Der startIndex ist der Positionsinde, an dem die Methode SubString() mit der Suche beginnen würde. Der Parameter length gibt die Anzahl der zurückzugebenden Zeichen ab dem startIndex an. Der Parameter length ist optional, und wenn er nicht verwendet wird, gibt die Methode SubString() alle Zeichen zurück.

Extrahieren einer Teilzeichenfolge ab einer Startposition und mit fester Länge

Der folgende Beispielcode ruft den Teil der $guid-Zeichenfolgenwertes ab, der ab dem Index 9 beginnt, und gibt genau die 5 folgenden Zeichen zurück.

$guid = 'e957d74d-fa16-44bc-9d72-4bea54952d8a'
$guid.SubString(9,5)

Extrahieren einer Teilzeichenfolge ab einer dynamischen Startposition

Dieses nächste Beispiel zeigt, wie Sie die Längeneigenschaft eines PowerShell-Strings verwenden können, um einen Startindex dynamisch festzulegen.

Der folgende Code macht folgendes:

  • Ruft die Länge des String-Objekts ab.
  • Ruft den Index des mittleren Indexes ab, indem die Länge durch 2 dividiert wird.
  • Verwendet den mittleren Index als Startindex des Teilstrings.
$guid = 'e957d74d-fa16-44bc-9d72-4bea54952d8a'
$guid.SubString([int]($guid.Length/2))

Da der Länge-Wert nicht angegeben wurde, hat die Substring()-Methode alle Zeichen ab dem Startindex zurückgegeben.

Extracting a Substring from a Dynamic Starting Position

Vergleichen von PowerShell-Zeichenketten

Sie können PowerShell auch zum Vergleichen von Zeichenketten verwenden, indem Sie die integrierten Methoden des Zeichenkettenobjekts wie CompareTo(), Equals() und Contains() verwenden. Oder indem Sie die PowerShell  Vergleichsoperatoren verwenden.

Verwendung der Methode CompareTo()

Die Methode CompareTo() gibt den Wert 0 zurück, wenn die beiden Zeichenketten den gleichen Wert haben. Im folgenden Beispiel werden zwei Zeichenkettenobjekte verglichen.

$string1 = "This is a string"
$string2 = "This is a string"
$string1.CompareTo($string2)

Da die Werte gleich sind, sollte das Ergebnis 0 sein, wie unten gezeigt.

Using CompareTo() method to compare strings

Verwendung der Methode Equals() und des Operators -eq

Die Methode Equals() und der Operator -eq können verwendet werden, um zu überprüfen, ob der Wert der beiden Zeichenketten gleich ist.

Das folgende Beispiel verwendet die Methode Equals(), um die Werte von $string1 und $string2 zu vergleichen.

$string1 = "This is a string"
$string2 = "This is not the same string"
$string1.Equals($string2)

Der obige Code sollte False zurückgeben, da die Werte von $string1 und $string2 nicht gleich sind.

Comparing strings with the Equals() method

Das nächste Beispiel unten verwendet stattdessen -eq, um die Werte von $string1 und $string2 zu vergleichen.

$string1 = "This is a string"
$string2 = "This is not the same string"
$string1 -eq $string2

Wie aus der untenstehenden Ausgabe ersichtlich ist, sind das Ergebnis bei Verwendung von -eq und der Methode Equal() gleich.

Comparing strings with the -eq operator

Verwendung der Methode Contains()

In diesem Beispiel werden die beiden Zeichenfolgen verglichen, indem überprüft wird, ob die PowerShell-Zeichenfolge eine Teilzeichenfolge einer anderen Zeichenfolge enthält.

Der folgende Code zeigt, dass die Werte von $string1 und $string2 nicht gleich sind. Der Wert von $string2 ist jedoch eine Teilzeichenfolge von $string1.

$string1 = "This is a string 1"
$string2 = "This is a string"
$string1.Contains($string2)

Das Ergebnis des obigen Codes sollte True sein, wie unten gezeigt.

Comparing strings using the Contains() method

Weitere Informationen

Source:
https://adamtheautomator.com/powershell-strings/