Kommentare: PowerShell String manipulieren: substring etc.

 

Fragen / Kommentare zu PowerShell String manipulieren: substring etc.

(neueste zuerst)


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

✍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