A common scenario in an admin’s world is to figure out a way to find a certain snippet of text inside a string; called the substring. PowerShell makes finding a substring extremely easy.
Verwandt: Erlernen Sie das Zeichenformat und das Erweitern von Zeichenketten
Ankündigung eines kostenlosen LIVE-Trainings – Beginnen Sie Ihre PowerShell-Reise – präsentiert von Johan Arwidmark. Verstehen Sie, wie PowerShell-Fähigkeiten Ihre IT-Karriere verbessern, erfahren Sie, wo Sie mit PowerShell beginnen können, erstellen Sie Ihre ersten Skripte und stellen Sie Johan direkt in einer Live-Trainingsumgebung Fragen.
PowerShell und Zeichenketten
In der PowerShell-Welt besteht eine Zeichenkette aus einer Reihe von Zeichen, die in einfachen oder doppelten Anführungszeichen eingeschlossen sind. Zeichenketten wie "foo"
und 'bar'
sind äußerst häufig.
Verwandt: Zurück zu den Grundlagen: PowerShell-Zeichenketten
Angenommen, Sie haben eine Zeichenkette in einer Variablen definiert und müssen nur einen Teil davon finden? Zum Beispiel haben Sie eine Zeichenkette mit einer Adresse wie 1234 4th St. Sie möchten die Nummer herausziehen und wissen, dass die ersten vier Zeichen immer die benötigte Nummer sind. In diesem Fall können Sie die PowerShell-Methode substring()
verwenden.
Verwendung der PowerShell-Substring-Methode
Um eine Zeichenkette in einer Zeichenkette mit PowerShell zu finden, können Sie die Substring()
-Methode verwenden. Diese Methode ist in jedem Zeichenkettenobjekt in PowerShell zu finden.
Zum Beispiel haben Sie möglicherweise einen String wie Der schnelle braune Fuchs sprang über den Zaun.
. Sie möchten die ersten fünf Zeichen finden. Dies könnte mit der Methode Substring()
folgendermaßen durchgeführt werden:
Das erste Argument, das Sie der Methode Substring()
übergeben müssen, ist die Position des linksten Zeichens. In diesem Fall ist das linkste Zeichen T
. Das zweite Argument ist die Position des am weitesten rechts stehenden Zeichens. In diesem Fall ist das Zeichen q
.
Die Methode Substring()
gibt alle Zeichen zwischen ihnen zurück.
Hier ist ein Beispiel aus der Praxis:
Angenommen, wir haben einen Produktcode im folgenden Format: XXXXVVVV-MM-DD-YYYY
. Alle Produkte haben dieses Codeformat und weichen nie davon ab. Nehmen wir an, die Lagerverwaltungssoftware, die diesen Code generiert hat, enthielt kein Erstellungsdatumfeld in der Datenbank.
Die Software hat jedoch immer dieses Datum als MM-DD-YYYY
im Produktcode selbst platziert, sodass wir dies aus dem Produktcode ableiten können. Wir müssen dieses Datum für unsere Produkte erhalten, um einen super-fancy, aber extrem unnötigen Bericht für das Management zu erstellen und zu zeigen, wann jedes Produkt in die Datenbank eingefügt wurde. Hier ist eine gute Möglichkeit, dies zu erledigen.
In diesem Beispiel verwenden wir die PowerShell SubString()
-Methode für das inhärente Stringobjekt und übergeben die Zahl für das erste Zeichen, das wir finden möchten, als Parameter.
Da wir das Stoppzeichen nicht angeben, wird angenommen, dass wir alle Zeichen bis zum Ende des Strings wollen. Um die Zahl überhaupt zu finden, erhalten wir zunächst die Länge des gesamten Produktcodes und subtrahieren einfach 10 davon. In diesem Beispiel bedeutet dies, dass wir am 10. Zeichen von rechts im String beginnen möchten und alles rechts davon.
Der Typ [DateTime]
passt nicht unbedingt zum Unterthema des Ausschnitts, aber ich dachte, er würde gut zu dem spezifischen Beispiel passen.
Nachdem wir unseren String vom 11-12-2013 erhalten haben, wandeln wir ihn in ein [DateTime]
-Objekt um, das aus dem einst dummen String ein schönes Objekt macht. Von hier aus können wir alle fancy Datumsberechnungen durchführen, die das Management von uns verlangt, und diesen schicken Balkendiagrammbericht generieren!
Dynamisches Finden eines Teilstrings unter Verwendung der Längeneigenschaft
In obigem Beispiel haben Sie die Start- und Endpositionen der Zeichen im String statisch definiert. Aber was ist, wenn Sie die letzte Position nicht kennen?
Vielleicht müssen Sie den Teilstring von den letzten vier Zeichen finden. Sie müssen die Zeichen von der vierten bis zur letzten Position bis zum Ende finden. Die Zeichenfolge, in der Sie suchen, könnte beliebig lang sein.
Anstatt die Endposition als positive Zahl zu definieren, die von links zählt, können wir die Endposition dynamisch unter Verwendung der Länge des Strings und der Subtraktion einer bestimmten Anzahl von Zeichen davon angeben.
Benutzen Sie den oben stehenden String $product_code = 'ABCD1234-11-12-2013'
, vielleicht möchten Sie die letzten vier Zeichen finden. Anstatt etwas wie dies zu tun:
Sie können 0
durch $product_code.Length - 4
ersetzen und überhaupt die Endposition nicht verwenden, und es wird die letzten vier Zeichen wie unten gezeigt zurückgeben.
Wenn Sie die Endposition nicht angeben, wird die PowerShell-Substring-Methode immer auf die letzte Zeichenposition zurückgreifen.
Durch die Verwendung der length
-Eigenschaft des Strings, die die Gesamtanzahl der Zeichen im String ist, und das Abziehen dieser Anzahl ermöglicht es Ihnen, Teilzeichenketten dynamisch auszuwählen.
Ankündigung eines kostenlosen LIVE-Trainings – Starten Sie Ihre PowerShell-Reise – präsentiert von Johan Arwidmark. Verstehen Sie, wie PowerShell-Fähigkeiten Ihre IT-Karriere verbessern, lernen Sie, wo Sie mit PowerShell beginnen können, erstellen Sie Ihre ersten Skripte und stellen Sie Johan direkt in einer Live-Trainingsumgebung Fragen.