从Powershell中的字符串中删除所有非字母和数字?

时间:2015-08-03 09:52:36

标签: powershell

我有一个变量,它有一个字符串可以接收像心脏一样的奇怪字符。

除此之外,无论如何我想知道:我如何留下一个只包含字母和数字的字符串,丢弃其余字符串或替换为空格(不添加空格或任何内容)

我的第一个想法是使用正则表达式,但我想知道Powershell是否有更自然的东西自动执行。

2 个答案:

答案 0 :(得分:9)

假设你有这样的变量:

$temp = '^gdf35#&fhd^^h%(@$!%sdgjhsvkushdv'

您可以使用-replace方法仅替换非字字符,如下所示:

$temp -replace "\W"

结果将是:

gdf35fhdhsdgjhsvkushdv

答案 1 :(得分:1)

考虑将批准的字符列入白名单,并替换未列入白名单的任何内容:

$temp = 'This-Is-Example!"£$%^&*.Number(1)'
$temp -replace "[^a-zA-Z0-9]"

ThisIsExampleNumber1

如果您确实希望将非字母数字字符包含在字符串中(例如,点,破折号,空格),则可以增加灵活性。

$temp = 'This-is-example!"£$%^&*.Number(2)'
$temp -replace "[^a-zA-Z0-9.-]"

This-is-example.Number2