String in PowerShell (Trim, Substring, Contains, etc.)
Mit einem String (Text) kann man in PowerShell einiges machen. Beispielsweise kann man Leerzeichen entfernen mit Trim(), Zeichen ersetzen mit Replace(), den String kürzen mit SubString(), oder einfach prüfen, ob ein Text einen bestimmten String beinhaltet mit Contains(). Doch in PowerShell kann man mit so genannten Strings noch viel mehr machen. Eine Übersicht liefert uns folgender Befehl:
"Dein String Test" | Get-Member
- Clone
- CompareTo
- Contains
- CopyTo
- EndsWith
- Equals
- GetEnumerator
- GetHashCode
- GetType
- GetTypeCode
- IndexOf
- IndexOfAny
- Insert
- IsNormalized
- LastIndexOf
- LastIndexOfAny
- Normalize
- PadLeft
- PadRight
- Remove
- Replace
- Split
- StartsWith
- Substring
- ToBoolean
- ToByte
- ToChar
- ToCharArray
- ToDateTime
- ToDecimal
- ToDouble
- ToInt16
- ToInt32
- ToInt64
- ToLower
- ToLowerInvariant
- ToSByte
- ToSingle
- ToString
- ToType
- ToUInt16
- ToUInt32
- ToUInt64
- ToUpper
- ToUpperInvariant
- Trim
- TrimEnd
- TrimStart
- Chars
- Length
Strings in PowerShell: Ersetzen, Vergleichen, Teilen und vieles mehr
Ein Text wird in Programmiersprachen immer String genannt, ebenso in PowerShell. Da die PS inzwischen sehr mächtig ist, kann man solche Strings prüfen, teilen, abschneiden, kürzen, und in andere Formate wandeln. Wie das funktioniert zeigen wir euch nachfolgend. Hier helfen uns Funktionen wie Split(), Trim(), Contains(), SubString(), Equals() und viele mehr.
Zwei Strings vergleichen mit CompareTo()
Wenn man zwei Strings vergleichen möchte, ob diese gleich sind oder nicht, so kann man in PowerShell CompareTo() verwenden.
"ITnator Post".CompareTo("itnator post")
Die Ausgabe der CompareTo() Methode ist in unserem Beispiel 1, da die Wörter gleich sind, aber Case Sensitive geprüft wird. Diese Ergebnisse gibt es:
- 0 = die Strings sind gleich
- -1 = die Stings sind nicht gleich
- 1 = der Text ist gleich, aber die Groß- & Kleinschreibung nicht
Auf Inhalt prüfen mit Contains()
Mit der Methode Contains() kann man in PowerShell prüfen, ob ein String einen bestimmten Text beinhaltet, oder nicht. Wichtig ist bei Contains(), dass diese Methode Case Sensitive ist, also auf die Groß- und Kleinschreibung achtet.
$yourString = "Beispiele auf ITnator.net" $yourString.Contains("ITnator") $yourString.Contains("itnator")
Dieses Beispiel liefert bei der ersten Contains()-Methode True zurück, da das Wort ITnator genau so in dem String vorhanden ist. Die zweite Methode liefert in PowerShell ein False zurück, da die Buchstaben zwar gleich sind, aber alles klein geschrieben ist.
Anfang und Ende eines Strings prüfen mit StartsWith() und EndsWith()
Mit der Methode StartsWith() kann man prüfen ob ein String mit einem bestimmten Text anfängt. Das Gegenstück hierzu ist EndsWith(), welches prüft, ob ein String mit bestimmten Zeichen endet. In PowerShell wird hier auch wieder ein Boolean ausgegeben, also True oder False. Außerdem ist zu beachten, dass diese Methode ebenfalls Case Sensitive ist.
$yourString = "Beispiele auf ITnator.net" $yourString.StartsWith("Beis") $yourString.EndsWith("NET")
In diesem Beispiel wird einmal TRUE ausgegeben, da mein String mit “Beis” anfängt. Bei Methode EndsWith(“NET”) wird FALSE ausgegeben, da die Groß- und Kleinschreibung nicht korrekt ist.
Hash eines Textes erhalten mit GetHashCode()
Un einen Hash-Wert eines Textes in PowerShell zu generieren hilft die Methode GetHashCode(). Hierbei wir der eindeutige und einmalige Hash-Code des String generiert und ausgegeben.
$yourString = "Beispiele auf ITnator.net" $yourString.GetHashCode()
Zeichen einsetzen in einen bestehenden String mit Insert()
Hat man einen bestehenden String und möchte in diesen Zeichen einfügen, so ist das in PowerShell mit der Methode Insert() ganz einfach. Das beste Beispiel ist wohl das einsetzen von Punkten oder Minus-Zeichen in Datumsangaben.
$yourDate = '20200728' $yourDate2 = '20200830' #nacheinander $yourdate = $yourDate.Insert(4, "-") $yourdate = $yourDate.Insert(7, "-") #kombiniert $yourDate2 = $yourDate2.Insert(4, "/").Insert(7, "/") Write-Host $yourDate Write-Host $yourDate2
Insert() kann man in PowerShell nacheinander nutzen, oder kombiniert in einer Zeile. Die Zahl in der Klammer sagt aus, nach welchem Zeichen der weitere Text eingesetzt werden soll. Das Zeichen, oder auch der Text in Anführungszeichen wird eingesetzt. Natürlich kann hier auch eine Variable angegeben werden.
Ein oder mehrere Zeichen entfernen mit Remove()
Wenn man aus einem bestehenden String ein Zeichen, oder sogar mehrere Zeichen entfernen möchte, so nutzt man in PowerShell die Methode Remove(). Bei Angabe einer Zahl werden alle Zeichen ab dieser Position entfernt. Gibt man zwei Zahlen getrennt durch ein Komma an, so werden die Zeichen im Text von-bis entfernt.
$yourString = "Beispiele auf ITnator.net" $yourString.Remove(1) $yourString.Remove(0,5)
Zeichen in Strings ersetzen mit Replace()
Um bestimmte Teile eines Strings durch einen anderen Text ersetzen zu können, verwendet man die Methode Replace() in PowerShell. Hier wird als erstes der String angegeben, welcher ersetzt werden soll. Durch ein Komma getrennt wird dann der Text angegeben, welche stattdessen eingesetzt werden soll.
$yourString = "Beispiele auf ITnator.net" $yourString.Replace("Beispiele","Neuigkeiten")
Bestehenden String teilen mit Split()
Manchmal hat man einen langen String, welchen man in mehrere Teile teilen möchte. Beispielsweise nach jedem Leerzeichen, um die einzelnen Wörter zu erhalten. In PowerShell nutzt man hierzu die Methode Split() mit Angabe des Zeichens.
$yourString = "Beispiele auf ITnator.net" $yourString.Split(" ") $test = $yourString.Split(" ") "Zweites Wort des geteilten Strings: " + $test[0]
Mit dem einfachen Aufrufen von Split werden alle Teile des Strings direkt ausgegeben (Zeile 4). Weißt man dies einer Variable zu, so entsteht ein Array (Zeile 6). Natürlich können auch neben einem Leerzeichen (Beispiel) auch andere Zeichen verwendet werden.
Zeichen aus String ausschneiden mit SubString()
Mit der PowerShell Methode Substring() ist es möglich einen Teil des Textes ausschneiden zu lassen, beziehungsweise zu subtrahieren. Wenn lediglich eine Zahl angegeben wird, wird der Text vor dieser Position abgeschnitten. Werden zwei Zahlen durch ein Komma getrennt angegeben, so wird in dieser Positionsspanne der Text im String subtrahiert.
$yourString = "Beispiele auf ITnator.net" $yourString.SubString(3) $yourString.SubString(3,7)
In diesem Beispiel wird einmal “spiele auf ITnator.net” ausgegeben, da nur eine Zahl angegeben wurde. Im zweiten Beispiel des Substring() wurden zwei Zahlen angegeben, welche den Bereich angeben, welcher ausgeschnitten werden soll.
Zeichen entfernen mit Trim(), TrimStart() und TrimEnd()
Möchte man in einem String die Leerzeichen am Anfang und am Ende entfernen, so bietet sich die PowerShell Methode Trim() an. Hier gibt es sogar TrimStart(), um bestimmte Zeichen am Anfang eines Textes zu entfernen und TrimEnd() um Zeichen am Ende abscheiden zu können. In allen Fällen muss das oder die Zeichen in Anführungszeichen angegeben werden.
$yourString1 = " Beispiele auf ITnator.net " $yourString2 = "Beispiele auf ITnator.net" $yourString1.Trim() #leerzeichen am Anfang und Ende entfernen $yourString2.TrimStart("Beispiele") $yourString2.TrimEnd(".net")
Anzahl der Zeichen zählen mit Lenght()
Oft hat man immens lange Strings, bei denen man die Anzahl an Zeichen wissen möchte. In PowerShell hilft Lenght um die Länge des String zählen zu lassen.
$yourString = "Beispiele auf ITnator.net" $yourString.Length
Als Ergebnis wird “25” ausgegeben, da der angegebene String 25 Zeichen enthält. Das Zählen der Texte und somit das Ermitteln der Größe ist in PowerShell sehr einfach.
Alles groß oder alle Zeichen klein schreiben mit ToUpper() und ToLower()
Um alle Zeichen des Strings in Kleinbuchstaben oder Großbuchstaben wandeln zu lassen, gibt es die Methoden ToUpper() und ToLower() in PowerShell. Hier werden lediglich die Buchstaben groß und klein geschrieben, die Sonderzeichen und Zahlen werden natürlich nicht angepasst.
$yourString = "Beispiele auf ITnator.net" $yourString.ToUpper() #alles groß $yourString.ToLower() #alles klein
Texte (Strings) zusammenfügen in PowerShell
Zum Schluss möchte ich noch zeigen, wie man verschiedene Strings in PowerShell zu einem String zusammenfügt, beziehungsweise addiert. In PowerShell ist das sehr einfach gelöst. Ein String kann mit einem einfachen “+” addiert werden, oder alternativ einfach die Variablen in Anführungszeichen auflösen lassen.
$string1 = "PowerShell" $string2 = "ist" $string3 = "einfach!" #Variante 1 $string1 + " " + $string2 + " " + $string3 #Variante 2 "$string1 $string2 $string3"
Somit ist es sehr einfach verschiedene Zeichenketten aneinander zu ketten, beziehungsweise die Texte addieren zu lassen. Zum Schluss könnte man diese dann noch in eine Variable schreiben, damit man in dieser den kompletten String der einzelnen Texte verwenden kann.