So extrahieren Sie eine PowerShell-Teilzeichenfolge aus einer Zeichenfolge

26. Mai 2021 40320 Ansichten Powershell-Teilstring

In PowerShell ist eine Teilzeichenfolge ein Teil einer Zeichenfolge. Sie können eine PowerShell-Teilzeichenfolge aus einer Zeichenfolge erstellen, indem Sie entweder die Substr g, Teilt Methoden.

Ein Beispiel für eine Zeichenfolge ist subdomain.domain.com . Die Teilstrings von subdomain.domain.com sind Unterdomäne , Domain , und mit .

In dieser S-Zone werde ich Ihnen alles beibringen, was Sie über PowerShell Substring lernen müssen.

Insbesondere lernen Sie, wie Sie Teilstrings mithilfe von extrahieren Teilzeichenfolge und Teilt Methoden . Außerdem lernen Sie die PowerShell kennen Teilt Operator .

Schließlich lernen Sie, wie Sie eine PowerShell-Zeichenfolge in Teilzeichenfolgen aufteilen und die verwenden Teilzeichenfolge Methode um die Teilstrings zu extrahieren.

Post-Themen durchsuchen

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit Teilzeichenfolge Methode

So extrahieren Sie einen PowerShell-Substring mit der Substring-Methode

In diesem ersten Abschnitt erfahren Sie, wie Sie Teilstrings aus einem String mit extrahieren Teilzeichenfolge Methode .

Mir ist bewusst, dass die Verwendung von Teilzeichenfolgen als Teil einer Zeichenfolge im selben Satz wie die Teilzeichenfolge Methode kann verwirrend sein. Aus Gründen der Klarheit beziehen sich Teilstrings als Teil eines Strings auf das Extrahieren eines Teils eines Strings. Beispiel: Extrahieren der Teilzeichenfolge usa aus der Zeichenfolge usa.itechguides.com. Im Gegenteil, die Teilzeichenfolge Methode bezieht sich auf die PowerShell Teilzeichenfolge Methode verwendet, um die Aufgabe auszuführen.

Ich werde diesen Abschnitt beginnen, indem ich die Syntax von erkläre Teilzeichenfolge Methode.

Syntax der PowerShell Teilzeichenfolge Methode

Die Syntax der Teilzeichenfolge Methode:

|_+_|

Um sicherzustellen, dass Sie die verbleibenden Teile dieses Abschnitts verstehen, ist es äußerst wichtig, dass Sie meine Erklärung dieser Syntaxen beachten.

Wie Sie der Syntax entnehmen können, wird bei der Angabe von Teilzeichenfolge Methode einer Zeichenfolge geben Sie ein Startindex UND Länge .

Der int in der Syntax zeigt an, dass die Startindex und Länge sind Zahlen (Ganzzahlen)

Der Startindex ist das erste Zeichen der Teilzeichenfolge, die Sie extrahieren möchten (Zählen Sie von links nach rechts und beginnen Sie mit der Addition von 1 zum Ergebnis der Index von – außer dem ersten Zeichen).

Außerdem die Länge ist die Anzahl der Zeichen, die Sie extrahieren möchten, beginnend bei 1 und gezählt ab dem ersten Zeichen der Teilzeichenfolge, die Sie extrahieren möchten.

Im nächsten Abschnitt erkläre ich die Index von Methode und wie man es verwendet, um die zu bestimmen Startindex und Länge . Wenn Sie immer noch verwirrt sind von meinem Versuch, dieses ziemlich komplexe Konzept von zu erklären Startindex und Länge , lassen Sie sich nicht entmutigen – es wird klarer, je weiter Sie in der Anleitung voranschreiten.

Um Ihnen zu helfen, dieses Konzept zu verstehen, wird im nächsten Abschnitt darauf eingegangen Index von und LastIndexOf Methoden.

So identifizieren Sie eine PowerShell-Substring-Position mit Index von Und LastIndexOf Methoden

Als ich die Syntax der Teilzeichenfolge Methode, sagte ich, dass die Startindex der PowerShell Teilzeichenfolge Methode ist das erste Zeichen der Teilzeichenfolge, die Sie extrahieren möchten (bestimmt durch Hinzufügen von 1 zum Ergebnis der Index von Wert für diese Teilzeichenfolge).

In diesem Abschnitt verwende ich die Index von und LastIndexOf Methoden einer PowerShell-Zeichenfolge, um Ihnen zu zeigen, wie PowerShell die Positionen von Teilzeichenfolgezeichen in einer Zeichenfolge bestimmt.

Betrachten wir zur Veranschaulichung die Indexposition des ersten Buchstabens u in usa.itechguides.com – indem Sie den folgenden Befehl ausführen…

|_+_| Der Index von Methode findet das erste Vorkommen einer Zeichenfolge (von links nach rechts zählend und bei Null beginnend)

Das Ergebnis ist Null (0)…

Warum ist das wichtig? Schön, dass du gefragt hast!

Sie erinnern sich an die Startindex UND Länge in der Syntax der PowerShell Teilzeichenfolge Methode ?

|_+_|

Wenn die Indexposition des Buchstabens u in usa.itechguides.com Null (o) ist, gemäß der Index von Methode – bedeutet dies, dass, wenn wir Zeichen ab dem Buchstaben u extrahieren möchten, unsere Startindex wird 0 sein – da es das erste Zeichen in der Zeichenfolge ist.

Die Ausnahme von der Regel, 1 zum Ergebnis von zu addieren Index von Befehl zur Bestimmung der Startindex ist das erste Zeichen in der Zeichenfolge. Der Startindex des ersten Zeichens einer Zeichenfolge ist immer Null (0).

Wie erstaunlich!

Jetzt fügen wir eine weitere Ebene hinzu. Was ist, wenn wir das letzte Vorkommen eines Zeichens in einer Zeichenfolge finden möchten?

Anstatt zu verwenden, die Index von Methode , verwenden wir die LastIndexOf Methode . Dieser Befehl bestimmt die Position des letzten Vorkommens des Buchstabens u in der Zeichenfolge, usa.itechguides.com :

|_+_| LastIndexOf findet das letzte Vorkommen des Strings (Zählung von links nach rechts und beginnend bei Null)

Das Ergebnis ist 10 …

So identifizieren Sie eine PowerShell-Substring-Position mit den Methoden IndexOf und LastIndexOfDieses Wissen darüber, wie PowerShell die Position von Teilzeichenfolgen in einer Zeichenfolge bestimmt, hilft Ihnen bei der Bearbeitung von PowerShell-Zeichenfolgen – unabhängig von der Komplexität.

So extrahieren Sie eine PowerShell-Teilzeichenfolge links von einer Zeichenfolge

In diesem Abschnitt erfahren Sie, wie Sie einen Teilstring aus der linken Seite eines Strings extrahieren. Ich zeige Ihnen ein Beispiel, das in Produktionsumgebungen verwendet werden kann.

Angenommen, Sie verwalten eine Active Directory-Domäne mit mehreren Unterdomänen. Die Subdomains werden mit einem 3-Buchstaben-Ländernamen benannt. Beispiele für Ihre Subdomains sind USA.itechguides.com , jpn.itechguides.com .

Nehmen wir außerdem an, dass Sie ein PowerShell-Skript schreiben, bei dem Sie bedingte Befehle basierend auf dem Subdomainnamen des Landes ausführen müssen – innerhalb Ihrer Active Directory-Domain.

In diesem Abschnitt werde ich Ihnen beibringen, wie Sie die Subdomain extrahieren VERWENDET , von USA.itechguides.com .

Beginnen wir mit dem Speichern der Subdomain, VERWENDET itechguides.com in einer Variablen namens Unterdomäne .

|_+_|

Befolgen Sie zum Extrahieren die folgenden Schritte VERWENDET , von USA.itechguides.com :

  1. Geben Sie neben der Variable, in der die Subdomain gespeichert wird, einen Punkt (.) ein, gefolgt von dem Wort Teilzeichenfolge . Fügen Sie zum Schluss eine öffnende Klammer hinzu …
|_+_| Nach dem Betreten Teilzeichenfolge , können Sie auch die Tab-Taste auf Ihrer Tastatur drücken. Wenn Sie die Tabulatortaste drücken, fügt PowerShell die öffnende Klammer (.
  1. Als nächstes geben Sie die ein Startindex gefolgt von einem Komma (,). Bevor Sie dies tun, denken Sie daran, dass wir USA extrahieren möchten. Da wir in diesem Fall aus dem ersten Zeichen unsere extrahieren wollen Startindex Null (0) ist. Der Befehl sieht nun so aus:
|_+_|
  1. Geben Sie abschließend die ein Länge , gefolgt von der schließenden Klammer, ). In diesem Beispiel ist die Länge (Zählen von der Zahl neben dem Startindex ) ist 3 – die Startindex 0 ist, das Addieren von 1 zu 0 ergibt 1.

    Wenn Sie von U zählen – USA hat 3 Zeichen – macht das Länge insgesamt 3 Zeichen.

    Hier ist das endgültige Skript …
|_+_|

Um den Befehl in Aktion zu sehen, führen Sie zuerst den folgenden Befehl aus ...

|_+_|

Das spart die Zeichenfolge, USA.itechguides.com in der PowerShell-Variable, $subdomain . Führen Sie dann den Befehl aus, der die USA-Teilzeichenfolge aus der Zeichenfolge extrahiert. USA.itechguides.com .

|_+_|

Wie erwartet lautet das Ergebnis USA!

Was ist, wenn Sie die übergeordnete Domäne extrahieren möchten? itechguides.com von USA.itechguides.com ? Was wird unser sein Startindex und Länge ?

Um Ihre zu bestimmen Startindex , führen Sie zuerst die Index von Befehl, wobei Sie den ersten Punkt (.) als Eingabe verwenden.

|_+_|

Das Ergebnis ist 3…

So extrahieren Sie eine PowerShell-Teilzeichenfolge links von einer Zeichenfolge

Nach meiner vorherigen Erklärung, um das zu bestimmen Startindex aus dem Ergebnis der Index von Befehl, addiere 1. Wenn wir 1 zu 3 addieren, ist unser Startindex ist 4.

Als nächstes, um die zu bestimmen Länge , beginnen Sie mit dem Zählen bei 1, beginnend mit dem ersten Zeichen der Zeichenfolge, die Sie extrahieren möchten. Stoppen Sie dann beim letzten Zeichen, das Sie aus der Zeichenfolge extrahieren möchten.

Denken Sie daran, dass wir extrahieren möchten itechguides.com von USA.itechguides.com ?

Zählen wir ab dem ersten Zeichen der zu extrahierenden Zeichenfolge (i), beginnend bei 1, die Länge ist 15 ( itechguides.com ist 15 Zeichen).

Basierend auf diesen Werten wird der Befehl, der die PowerShell-Teilzeichenfolge extrahiert, itechguides.com von USA.itechguides.com ist…

|_+_|

Hier ist das Ergebnis, itechguides.com !

Abschließend, um dieses ziemlich verwirrende Konzept von zu vereinfachen Startindex , Index von , und Länge , hier eine Zusammenfassung:

  1. Der Startindex des ersten Zeichens einer PowerShell-Zeichenfolge ist immer Null (0)
  2. Um das festzustellen Startindex einer Teilzeichenfolge 1 zu addieren Index von Befehlsergebnis
  3. Endlich, das Länge der PowerShell-Teilzeichenfolge, die Sie extrahieren möchten, ist die Gesamtzahl (beginnend mit 1) und zählt vom ersten Zeichen der Teilzeichenfolge bis zum letzten Zeichen der Teilzeichenfolge.

So extrahieren Sie eine PowerShell-Teilzeichenfolge vor und nach einem bestimmten Zeichen

In diesem Abschnitt werde ich Ihnen beibringen, wie Sie PowerShell-Teilzeichenfolgen vor und nach einem bestimmten Zeichen extrahieren.

Um dies zu veranschaulichen, gehen wir zurück zu unserer Subdomain…

|_+_|

Angenommen, ich möchte die Teilzeichenfolge vor der Anzeige nach dem ersten Punkt (.) extrahieren. Effektiv möchte ich USA (die Teilzeichenfolge vor dem angegebenen Zeichen) extrahieren.

Außerdem möchte ich itechguides.com (die Teilzeichenfolge nach dem angegebenen Zeichen) extrahieren.

Der erste Schritt ist die Verwendung von Index von Methode um die Position des Referenzzeichens zu bestimmen. Der folgende Befehl speichert die Position des Referenzzeichens in einer aufgerufenen Variablen Referenzcharakter .

|_+_|

Verwenden Sie als nächstes die Teilzeichenfolge Methode um den Teilstring vor dem Referenzzeichen zu extrahieren.

|_+_|

Hier ist das Ergebnis…

Verwenden Sie schließlich die folgende PowerShell Teilzeichenfolge Methode um den Teilstring nach dem Referenzzeichen zu extrahieren

|_+_|

Wie erwartet extrahiert das Ergebnis die Teilzeichenfolge nach dem Punkt, also itechguides.com !

So extrahieren Sie eine PowerShell-Teilzeichenfolge vor und nach einem bestimmten Zeichen

So extrahieren Sie eine PowerShell-Teilzeichenfolge zwischen 2 Zeichen

In diesem Abschnitt werde ich Ihnen beibringen, wie man extrahiert itechguides von USA.itechguides.com . In diesem Beispiel möchte ich eine PowerShell-Teilzeichenfolge zwischen 2 Zeichen extrahieren.

Die beiden Zeichen in diesem Beispiel sind der erste und der letzte Punkt (.). Das Skript erfordert 3 Befehle.

Im ersten Befehl verwenden wir die Index von Methode um die Position des ersten Referenzzeichens (.) zu bestimmen. Speichern Sie dann das Ergebnis in einer Variablen namens ersteref .

|_+_|

Als nächstes verwenden wir die LastIndexOf Methode um die Position des letzten Referenzzeichens zu bestimmen. Das Ergebnis wird gespeichert Lastref Variable.

|_+_|

Um schließlich die PowerShell-Teilzeichenfolge zu extrahieren, itechguides Führen Sie zwischen 2 Zeichen (den Punkten) den folgenden Befehl aus…

|_+_|

Im Befehl haben wir 1 zum Ergebnis von hinzugefügt Index von Befehl. In diesem Beispiel 3, was insgesamt 4 ergibt.

Das macht unsere Startindex Vier.

Zusätzlich in der PowerShell Teilzeichenfolge Methode , wir haben die verwendet Länge wie $lastref-4 .

Von unseren vorherigen Befehlen, $lastref ist die Variable, die wir als Ergebnis gespeichert haben LastIndexOf Befehl.

Das Ergebnis ist 15. Das Entfernen von 4 von 15 ergibt unser Länge elf.

Das Ergebnis des letzten Befehls ist itechguides !

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit der Split-Methode

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit der Split-Methode

Im ersten Abschnitt dieses Handbuchs habe ich erläutert, wie Sie eine PowerShell-Teilzeichenfolge mit der Teilzeichenfolge Methode . In diesem Abschnitt erfahren Sie, wie Sie PowerShell-Teilzeichenfolgen mit der extrahieren Teilt Methode .

Wie üblich beginne ich diesen Abschnitt mit der Syntax der PowerShell Teilt Methode .

Syntax der PowerShell Teilt Methode

Die Syntax der Teilt Methode zum Extrahieren einer PowerShell-Teilzeichenfolge ist:

|_+_|

Das Trennzeichen ist ein beliebiges Zeichen, das Sie verwenden möchten, um die PowerShell-Zeichenfolge in einzelne Teilzeichenfolgen aufzuteilen.

Die Teilstringposition in der []-Klammer wird verwendet, um einen bestimmten Teilstring auszuwählen, den Sie aus den Strings zurückgeben möchten.

So verwenden Sie mehrere Trennzeichen mit PowerShell Split

Wie in der Syntax der PowerShell zu sehen Teilt Methode , erlaubt es nur ein Trennzeichen. Wenn Sie jedoch Teilzeichenfolgen aus einer Zeichenfolge mit mehreren Trennzeichen trennen möchten, müssen Sie die PowerShell verwenden Teilt Operator , stattdessen.

Die Syntax der PowerShell Teilt Betreiber ist…

|_+_|

Wenn Sie mehrere Trennzeichen verwenden möchten, speichern Sie die Zeichenfolge zunächst in einer Variablen – in diesem Beispiel $string. Verwenden Sie dann die automatische Pipeline-Variable $_, um die mehreren Trennzeichen wie unten gezeigt hinzuzufügen:

|_+_|

Das können wir zum Beispiel aufteilen Eindeutiger Active Directory-Name , OU=LON,OU=DEV,DC=ITECHGUIDES,DC=COM – mit den beiden Trennzeichen =, und ,.

Zuerst speichern wir den DN in einer Variablen namens $ADDN…

|_+_|

Verwenden Sie dann den folgenden Befehl, um die Zeichenfolge mit den Trennzeichen =, und , zu teilen:

|_+_|

Bingo, der letzte Befehl hat den String in einzelne PowerShell-Substrings aufgeteilt!

Im nächsten Abschnitt erfahren Sie, wie Sie einen der Substings zurückgeben.

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit The Teilt Methode

Im letzten Abschnitt haben Sie gesehen, wie Sie mit der PowerShell einen String in einzelne Teilstrings aufteilen Teilt Operator . Hier ist der letzte Befehl …

|_+_|

Der Befehl zerlegt den String in seine einzelnen Teilstrings.

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit der Split-Methode

Als ich die Syntax der Teilt Die Methode zum Extrahieren einer PowerShell-Teilzeichenfolge ist, ich habe eine []-Klammer eingefügt, die die Position der Teilzeichenfolge enthält, die Sie zurückgeben möchten:

|_+_|

PowerShell nummeriert die Positionen von Teilzeichenfolgen von Null (0). Zurück zum Active Directory-DN-Beispiel – siehe Screenshot unten – die erste Teilzeichenfolge OU befindet sich an Position Null (0), LON an Position 1 und so weiter.

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit der Split-Methode

Um also LON zurückzugeben, schließen wir den letzten Befehl in die Klammer [1] ein. In diesem Fall, eins ist die Position der Teilzeichenfolge, die wir zurückgeben möchten.

Hier ist der Befehl …

|_+_|

Hier ist das Ergebnis des Befehls:

Alternativ können Sie das Ergebnis des Befehls auch mit speichern Teilt Operator in eine Variable.

|_+_|

Geben Sie dann einen der Teilstrings zurück, indem Sie die Position des Teilstrings in die []-Klammer einschließen. Um beispielsweise LON zurückzugeben, verwenden wir den folgenden Befehl:

|_+_|

Das Ergebnis ist dasselbe wie beim vorherigen Befehl ohne die Variable…

So extrahieren Sie eine PowerShell-Teilzeichenfolge mit der Split-Methode

So extrahieren Sie das letzte Element einer Teilzeichenfolge mit PowerShell Split

Wenn Sie das erste oder letzte Element (Zeichen) eines Teilstrings zurückgeben möchten, können Sie das gleiche Prinzip aus unserem letzten Beispiel verwenden.

Bei der Recherche zu diesem Thema bin ich darüber gestolpert stackoverflow.com Faden. Der Benutzer hat eine Zeichenfolge, die unten gezeigt wird:

|_+_| Die StackOverflow-Frage erklärt, dass die Zeichenfolge 0.3.1-15-g3b885c5 bedeutet Tag-CommitDistance-CommitId . 0.3.1 ist also die Schild , 15 ist die CommitDistance , und g3b885c5 ist die CommitId .

Die Frage ist, den ersten Teil der Zeichenfolge zurückzugeben, 0.3.1 – laut diesem Benutzer aufgerufen Schild . Außerdem möchte der Benutzer den letzten Teil der Zeichenfolge, g3b885c5, namens the zurückgeben CommitId .

Der erste Schritt besteht darin, den String in einer Variablen zu speichern (dies ist optional, macht aber im Allgemeinen das Leben einfacher).

|_+_|

Verwenden Sie dann die Teilt Methode zum Aufteilen der Zeichenfolge in PowerShell-Teilzeichenfolgen mit - als Trennzeichen. Um es mir noch einmal leicht zu machen, speichere ich das Ergebnis in einer anderen Variablen ...

|_+_|

Um das Ergebnis des letzten Befehls anzuzeigen, führen Sie die $TccSubstrings allein variabel.

|_+_|

Hier ist es…

Basierend auf unseren vorherigen Beispielen in diesem Abschnitt, um die Schild (die erste Teilzeichenfolge), verwenden Sie den folgenden Befehl:

|_+_|

Schließlich, um die zu extrahieren CommitId (die letzte Teilzeichenfolge), verwenden Sie den folgenden Befehl…

|_+_|

Und hier sind die Ergebnisse…

So extrahieren Sie das letzte Element einer Teilzeichenfolge mit PowerShell Split

Beachten Sie, dass Sie dieses Problem auch lösen können, indem Sie einen einzigen Befehl ausführen …

|_+_|

Und hier ist das gleiche Ergebnis…

Das ist keine Magie, ich habe nur alle Befehle zu einem Befehl kombiniert!

So teilen Sie Zeichenfolgen auf und entfernen leere Einträge mit PowerShell Split

In diesem letzten Beispiel möchte ich Ihnen zeigen, wie Sie einen String mit Leerzeichen (oder Einträgen) in Teilstrings aufteilen. Entfernen Sie dann die Leerzeichen im Endergebnis.

In einem anderen stackoverflow.com Thread, ein Benutzer hat diesen in einer Variablen gespeicherten String gepostet:

|_+_|

Der Benutzer verwendete dann die Teilt Methode um den String in einzelne Teilstrings aufzuteilen.

|_+_|

Laut dem Benutzer (und das ist offensichtlich) besteht das Problem darin, dass das Ergebnis Leerzeichen enthält.

Die Person, die diese Frage gepostet hat, wollte, dass die Leerzeichen aus den Teilzeichenfolgen entfernt werden. Es gibt mehrere Lösungen, aber eine schnelle Möglichkeit besteht darin, die Ausgabe des Split-Befehls an zu leiten Wo-Objekt .

Dies mit freundlicher Genehmigung von Ryant . Hier ist der Befehl …

|_+_|

Und hier ist das Ergebnis…

Das ist er, unser aktualisierter PowerShell-Substring-Artikel! Ich hoffe, Sie fanden es hilfreich.

Wenn Sie diesen Artikel hilfreich fanden, stimmen Sie bitte ab ja zu der Frage War dieser Beitrag hilfreich unten.

Alternativ können Sie eine Frage stellen, einen Kommentar hinterlassen oder weitere Rückmeldungen geben, indem Sie das Formular „Antwort hinterlassen“ am Ende dieser Seite verwenden.

Weitere PowerShell-Tech-S-Zonen finden Sie schließlich auf unserer Anleitungsseite für Windows PowerShell. Vielleicht finden Sie auch unsere Seite Arbeit von zu Hause aus sehr hilfreich.

Referenzen und weiterführende Literatur

  1. Über Split
  2. String.Substring-Methode
  3. Über Operatoren
  4. Über Methoden
  5. String.Split-Methode