PowerShell String manipulieren: substring etc.

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!


veröffentlicht am 10.10.2016 von Bernhard
geändert am 03.10.2017 von Bernhard


Top-Artikel in diesem Bereich

Preview PowerShell Loops und Array

PowerShell Loops und Array

geändert: 11.11.2020 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: 08.09.2021 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 Windows PowerShell Befehle: commands im Überblick

Windows PowerShell Befehle: commands im Überblick

geändert: 12.09.2017 von Bernhard (Erstveröffentlichung: 16.11.2011)

die verfügbaren PowerShell Befehle können mit dem Befehl: ... weiterlesen


Fragen / Kommentare


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

✍anonym
erstellt am 02.10.2017 08:10
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
erstellt am 02.10.2017 08:10
danke, habe ich korrigiert

erstellt von Bernhard

✍anonym
erstellt am 19.04.2017 13:04
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
erstellt am 08.03.2021 11:03
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

erstellt von anonym

✍anonym
erstellt am 28.08.2020 12:08
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
erstellt am 25.06.2018 11:06
User: Philipp 
Neben TrimStart war für mich auch TrimEnd ganz nützlich, funktioniert ähnlich zu TrimStart ;)