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

{{percentage}} % positiv

DANKE für deine Bewertung!
Beitrag erstellt von Bernhard
| Veröffentlicht: 10.10.2016
| Aktualisiert: 02.10.2017 |
Translation English
|🔔
| Kommentare:6
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(am besten bewertete zuerst)]
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
User: Philipp Neben TrimStart war für mich auch TrimEnd ganz nützlich, funktioniert ähnlich zu TrimStart ;)
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
danke, habe ich korrigiert
Beitrag erstellt von Bernhard
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?
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