PowerShell-Trim: Zeichen am Anfang und Ende eines Strings entfernen


    Tags:

    String-Operationen in PowerShellDie meisten Programmiersprachen bieten Funktionen zur Bearbeitung von Strings, mit denen man gezielt führende oder abschließende Zeichen abschneiden kann. String-Objekte verfügen in PowerShell über drei derartige trim()-Methoden, die nicht nur Leerzeichen, sondern beliebige Zeichen am Anfang und am Ende entfernen.

    Wer Erfahrung mit Visual Basic hat, der weiß, dass LTrim, Trim und RTrim eine bequeme Möglichkeit bieten, Strings von unnötigen Leerzeichen am Anfang und Ende zu bereinigen. Für das Entfernen aller anderen Zeichen muss man dort zu einer Methode für das Ersetzen von Substrings greifen.

    Ein solches Replace bietet PowerShell als Methode und Operator, aber diese muss man nicht bemühen, um beliebige Zeichen am Anfang und am Ende eines Strings abzuschneiden. Dies lässt sich dort über die Trim-Methoden erledigen.

    Trim-Methoden in PowerShell

    Möchte man die Zeichen nur am Anfang löschen, dann verwendet man TrimStart(), und für das Trimmen der Zeichenkette am Ende ist TrimEnd() vorgesehen. Trim() entfernt sie von beiden Seiten.

    Ruft man sie ohne Argumente auf, dann schneiden sie wie in Basic nur Whitespace am Anfang, am Ende oder auf beiden Seiten ab. Die Zeichenkette

    "`tTest  "

    beginnt mit einem Tabulator (`t) und endet mit zwei Leerzeichen. Der Aufruf von

    ("`tTest  ").Trim()

    entfernt diese an beiden Enden.

    Whitespace am Anfang und am Ende eines Strings mit Trim() entfernen

    Liste von Zeichen aus String entfernen

    Interessanter ist die Möglichkeit, nicht nur Whitespace, sondern auch andere Zeichen abzuschneiden. Diese übergibt man als Array an eine der Trim()-Methoden. Sie entfernen dann alle Zeichen so lange, bis sie auf eines treffen, das nicht in der Liste enthalten ist:

    ("<-- Das ist ein HTML-Kommentar -->").Trim(" ", "<", "-", ">")

    In diesem Beispiel schneidet Trim() alle Zeichen vom Anfang und Ende her ab, bis es auf eines stößt, das weder ein Leer-, Kleiner- oder Größerzeichen noch ein Bindestrich ist. Das Ergebnis ist der reine Kommentar ohne die Marker.

    Text eines HTML-Kommentars mit Trim() extrahieren

    Beim Einsatz dieser Methoden mit einem Array als Argument ist zu beachten, dass sie Zeichen für Zeichen entfernen und nicht einen Substring wie "<--".

    Das obige Beispiel würde daher nicht nur Kommentare extrahieren, wenn man es über eine HTML-Datei laufen lässt, sondern auch HTML-Elemente verunstalten, wenn diese am Anfang oder Ende einer Zeile stehen. Das Ergebnis für

    ("<p>Das ist ein Absatz</p>").Trim(" ", "<", "-", ">")

    wäre dann

    p>Das ist ein Absatz</p

    Substrings abschneiden

    Für solche Situationen bieten die Trim()-Methoden aber die Möglichkeit, ganze Strings als Argument zu übergeben:

    ("<-- Das ist ein HTML-Kommentar -->").TrimStart("<--")

    Der obige Aufruf entfernt den öffnenden Marker eines HTML-Kommentars. Allerdings ist man dabei auf einen einzelnen Strings beschränkt und es ist nicht möglich, ein Array von Strings anzugeben.

    Daher müsste man das Ergebnis erneut durch eine Trim()-Methode schicken, um weitere Zeichen zu entfernen:

    $k = "<-- Das ist ein HTML-Kommentar -->"
    $k = $k.TrimStart("<--")
    $k.TrimEnd("-->")

    Zeichenketten am Anfang und Ende eines Strings abschneiden

    Zusammenfassung

    Die Trim-Methoden in PowerShell sind mächtiger als etwa in Basic oder JavaScript. Ruft man sie ohne Argumente auf, dann schneiden sie an den Enden eines Strings nur Whitespace ab.

    Übergibt man ihnen ein Character-Array, dann entfernen Trim(), TrimStart() und TrimEnd() alle Zeichen in dieser Liste und brechen ihre Aktion erst ab, wenn sie auf eines stoßen, das nicht darin enthalten ist.

    Schließlich besteht noch die Möglichkeit, einen ganzen Substring als Argument zu übergeben, um diesen am Anfang oder / und am Ende zu entfernen. Hier ist man jedoch auf einen Substring als Argument beschränkt, so dass man unter Umständen mehrere Aufrufe benötigt.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links