在PowerShell中过滤字符串中不需要的字符

时间:2017-02-23 14:33:18

标签: powershell

我想要一种更简单的方法,使用PowerShell中的白名单从字符串中过滤掉不需要的字符。在这种情况下,我只想要字母数字和空格。这是我到目前为止(它的工作原理),但似乎必须有一个小技巧,不需要额外的变量:

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

1 个答案:

答案 0 :(得分:1)

通过反转character class并使用-replace运算符,删除字符串中您不想要的字符:

$str = $str -replace '[^\w ]+'

请注意,\w包含下划线字符(_)。如果您希望删除它,则需要将正则表达式更改为[^a-z0-9 ]。由于PowerShell默认情况下不区分大小写,因此除非您要使用区分大小写的替换运算符(-creplace),否则不需要显式包含大写字母。在这种情况下,将正则表达式更改为[^a-zA-Z0-9 ]