Avatar billede Kentoi Seniormester
02. maj 2018 - 14:43 Der er 3 kommentarer og
1 løsning

POWERSHELL: Undlade string med bestemt indhold

Hvordan filtrer jeg strings med bestemt indhold? Jeg har denne, men kan ikke lige få det til at virke.
for ($i=0;$i -le $aDirectReports.Count-1; $i++) {
    if ($aDirectReports[$i] -notmatch "Admin" -or $aDirectReports[$i] -notmatch "Graveyard" -or $aDirectReports[$i] -notmatch "Resources" -or $aDirectReports[$i] -notmatch "Leavers") {
        $aDirectReports[$i]
    }
}
Avatar billede Spotgun Seniormester
02. maj 2018 - 18:19 #1
Du skal bruge -and i stedet for -or.
De strings du vil filtrere må ikke indeholde nogen af de fire ord, derfor skal alle fire -notmatch statements være opfyldt, før ordet udskrives.
Avatar billede Kentoi Seniormester
02. maj 2018 - 20:43 #2
Med de 4 ord findes ikke i hver linje samtidig, men de vil kunne findes i linjer hver for sig.
Avatar billede Spotgun Seniormester
03. maj 2018 - 11:48 #3
If-sætningen evaluerer heller ikke på om alle fire ord findes i inputtet samtidigt hvis du bruger -and, den evaluerer hvert ord for sig. Så dit input udskrives kun, hvis dit input IKKE indeholder nogle af ordene.

Du kunne evt. også drage nytte af at -notmatch kan bruges med regular expressions. Jeg syntes det øger læsbarheden:
$Filter = @("Admin", "Graveyard", "Resources", "Leavers") -join "|"
foreach($Item in $aDirectReports) {
    if($Item -notmatch $Filter) {
        $Item
    }
}
Avatar billede Kentoi Seniormester
04. maj 2018 - 10:10 #4
Pisse smart. Den havde jeg ikke lige tænkt på.
Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester