PowerShell String manipulieren

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

.ToUpper()

Wandelt einen String in Großbuchstaben um

$("test").ToUpper()

Ausgabe:

TEST

.ToLower()

Wandelt einen String in Kleinbuchstaben um

$("TEST").ToLower()

Ausgabe:

test

.Contains()

Testet einen String, ob eine bestimmte Zeichenfolge vorhanden ist

$("TEST").Contains("ES")

Ausgabe:

True

.StartsWith()

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

$("TEST").StartsWith("TE")

Ausgabe:

True

.EndsWith()

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

$("TEST").EndsWith("ST")

Ausgabe:

True

.Replace()

Ersetzt eine bestimmte Zeichenfolge innerhalb eines Strings

$("TEST").Replace("TE","ersetzt")

Ausgabe:

ersetztST

.Substring()

Ersetzt Teile eines Strings anhand derer Position

$("TEST").Substring("1")

 1 ... nach dem ersten Zeichen

Ausgabe:

EST

hier ein weiters Beispiel: Anfang und Endposition:

$("TEST").Substring("1","2")

1 ... nach dem ersten Zeichen

2 ... bis zum 2ten Zeichen

Ausgabe:

ES

 

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

$("TEST").Substring("","3")

Ausgabe:

TES

.TrimStart()

Entfernt bestimmte Zeichen zu Beginn des Strings:

$("TEST").TrimStart("TE")

Ausgabe:

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



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 ;)

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Details anzeigen.