PowerShell String manipulieren: substring etc.

This page is also available in English

In diesem Artikel zeige ich ein paar Beispiele für das Manipulieren von Strings (Zeichenketten)

.ToUpper()

Wandelt einen String in Großbuchstaben um

PS C:\> $("test").ToUpper()
Result:
TEST

.ToLower()

Wandelt einen String in Kleinbuchstaben um

PS C:\> $("TEST").ToLower()
Result:
test

.Contains()

Testet einen String, ob eine bestimmte Zeichenfolge vorhanden ist

PS C:\> $("TEST").Contains("ES")
Result:
True

.StartsWith()

Testet einen String, ob dieser mit einer bestimmten Zeichenfolge beginnt.

PS C:\> $("TEST").StartsWith("TE")
Result:
True

.EndsWith()

Testet einen String, ob dieser mit einer bestimmten Zeichenfolge endet.

PS C:\> $("TEST").EndsWith("ST")
Result:
True

.Replace()

Ersetzt eine bestimmte Zeichenfolge innerhalb eines Strings

PS C:\> $("TEST").Replace("TE","ersetzt")
Result:
ersetztST

.Substring()

Ersetzt Teile eines Strings anhand derer Position

PS C:\> $("TEST").Substring("1")
Result:
EST

hier ein weiters Beispiel: Anfang und Endposition:

PS C:\> $("TEST").Substring("1","2")
Result:
ES
  • 1 ... nach dem ersten Zeichen
  • 2 ... bis zum 2ten Zeichen

Sollte nur die Endposition verwendet werden, sieht das so aus:

PS C:\> $("TEST").Substring("","3")
Result:
TES

.TrimStart()

Entfernt bestimmte Zeichen zu Beginn des Strings:

PS C:\> $("TEST").TrimStart("TE")
Result:
ST

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


Top-Artikel in diesem Bereich

Preview PowerShell Loops und Array

PowerShell Loops und Array

geändert: 25.02.2022 von Bernhard (Erstveröffentlichung: 21.03.2013)

Ein Array speichert mehrere Werte, ähnlich einer 2 spaltigen Tabelle. ... weiterlesen

Preview Windows PowerShell Skript erstellen und ausführen

Windows PowerShell Skript erstellen und ausführen

geändert: 06.04.2022 von Bernhard (Erstveröffentlichung: 28.11.2012)

Im einfachsten Fall ist ein PowerShell-Skript eine Textdatei mit einer Reihe von PowerShell-Befehlen. Als PowerShell Skript versteht man eine Datei mit der Endung .ps1. Die Skriptdatei kann eine Sammlung von Befehlen, Funktionen oder Cmdlets enthalten. ... weiterlesen

Preview PowerShell Log-Files: Logging in eine Textdatei - write to file

PowerShell Log-Files: Logging in eine Textdatei - write to file

geändert: 08.09.2021 von Bernhard (Erstveröffentlichung: 26.08.2020)

Logfiles in PowerShell können über den Befehl Out-File, über eine eigene Funktion oder über das in PowerShell integrierte Transcript erstellt werden. ... weiterlesen


Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
02.10.2017 08:12
User: Philipp 
$("TEST").Substring("","3") ergibt TES und nicht EST

Hier Zitat von oben ;)

Sollte nur die Endposition verwendet werden, sieht das so aus:
PowerShell
$("TEST").Substring("","3")
Ausgabe:
EST
✍Bernhard
gepostet am 02.10.2017 08:12
danke, habe ich korrigiert

Beitrag erstellt von Bernhard

✍anonym
19.04.2017 13:33
User: Daniel 
Hallo

Wie würde denn so etwas unter einer PS-String-Manipulation funktionieren:

Ich lese eine Parameterliste aus einem Konfig-File ein und schneide das Keyword weg:

foreach ($p in get-content DC_progs.cfg){
  if($p.contains("CMOD_DIRS=") = "true"){  
   write-host $p
   $cmod_dirs = $p.replace("CMOD_DIRS=", "")
   write-host $cmod_dirs 
   }
}

Resultat:
CMOD_DIRS=ond_doks\scanning;ond_kasse_zgkb;ond_doks\holdmail;ond_doks\privor;
ond_doks\scanning;ond_kasse_zgkb;ond_doks\holdmail;ond_doks\privor; 

nun müsste ich diese Liste in ein array ablegen:

unter RapidQ gibt es so eine schöne INSTR-Funktion:

    if(INSTR($p, ";") > 0) then
     ai = INSTR($p, ";") ' -> ai = 18
     b_dir$ = MID$($p, 1, ai - 1) ' -> split pos 1- pos 17 =  ond_doks\scanning
     usw für die anderen Elemente der Liste

Gibst es so etwas auch unter PS?
✍anonym
gepostet am 08.03.2021 11:15
Die Antwort kommt vielleicht etwas spät, aber mag anderen noch helfen:

Die Methode gibt es in PowerShell und nennt sich "split". Das kannst du einfach hinter die andere Methode "replace" hängen.

Würde dann bei deinem Beispiel in etwa so aussehen:

$dccfg = Get-Content DC_progs.cfg
foreach ($p in $dccfg){
    if($p.contains("CMOD_DIRS=")){
    $p
    $cmod_dirs = $p.replace("CMOD_DIRS=","").split(";")
    $cmod_dirs 
    }
}

Resultat:
CMOD_DIRS=ond_doks\scanning;ond_kasse_zgkb;ond_doks\holdmail;ond_doks\privor;
ond_doks\scanning
ond_kasse_zgkb
ond_doks\holdmail
ond_doks\privor

Wenn man "Write-Host" in der Ausgabe weglässt, wird es auch etwas besser sichtbar, dass man nun eine Liste zurück bekommt.

LG Chris

Beitrag erstellt von anonym

✍anonym
28.08.2020 12:40
replace und substring funktionieren bei mir aus irgendeinem grund nicht. Sie werden auch nicht bei den Vorschlägen für den "nächsten" Befehl vorgeschlagen

✍anonym
25.06.2018 11:20
User: Philipp 
Neben TrimStart war für mich auch TrimEnd ganz nützlich, funktioniert ähnlich zu TrimStart ;)