/ / Filtra i caratteri indesiderati dalla stringa in PowerShell - powershell

Filtra i caratteri indesiderati dalla stringa in PowerShell - powershell

Voglio un modo più semplice per filtrare indesideraticaratteri da una stringa usando una lista bianca in PowerShell. In questo caso, voglio solo alfanumerico e spazi. Ecco quello che ho finora (e funziona), ma sembra che ci debba essere un piccolo trucco che non richiede una variabile extra:

$tmp = ""
[regex]::Matches($str, "[w ]+") | ForEach-Object { $tmp += $_.Groups[0].Value }
$str = $tmp

risposte:

1 per risposta № 1

Rimuovi i caratteri che non vuoi nella stringa invertendo la classe di personaggio e usando il -replace operatore:

$str = $str -replace "[^w ]+"

Nota che w include il carattere di sottolineatura (_). Se vuoi che sia rimosso anche tu devi cambiare l'espressione regolare in [^a-z0-9 ]. Poiché PowerShell non distingue maiuscole e minuscole per impostazione predefinita, non è necessario includere in modo esplicito le lettere maiuscole a meno che non si desideri utilizzare l'operatore sostitutivo con distinzione tra maiuscole e minuscole (-creplace). In tal caso, modifica l'espressione regolare in [^a-zA-Z0-9 ].