我有一个变量,它有一个字符串可以接收像心脏一样的奇怪字符。
除此之外,无论如何我想知道:我如何留下一个只包含字母和数字的字符串,丢弃其余字符串或替换为空格(不添加空格或任何内容)
我的第一个想法是使用正则表达式,但我想知道Powershell是否有更自然的东西自动执行。
答案 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