【问题标题】:Strip all non letters and numbers from a string in Powershell?从Powershell中的字符串中删除所有非字母和数字?
【发布时间】:2020-06-15 17:26:14
【问题描述】:

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

除此之外,我无论如何都想知道:我如何留下一个只有字母和数字的字符串,丢弃其余的或什么都不替换(不添加空格或任何东西)

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

【问题讨论】:

  • 如果本地没有办法做到这一点,那么我想正则表达式将不得不这样做,尽管我更愿意避免它。

标签: powershell


【解决方案1】:

假设你有这样的变量:

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

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

$temp -replace "\W"

结果将是:

gdf35fhdhsdgjhsvkushdv

【讨论】:

  • $temp -replace "\W" 可以或必须是 $temp = $temp -replace "\W" 甚至两者都可以工作......我会试试看。
  • 如果你想用新结果更新 $temp 变量然后执行: $temp = $temp -replace "\W"
【解决方案2】:

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

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 2014-04-26
    • 2013-01-19
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多