Powershell,将 DOT 替换为 SPACE

Powershell, replace DOT with SPACE

这个有效:

$string = "This string, has a, lot, of commas in, it."
  $string -replace ',',''

输出:这个字符串中有很多逗号。

但这不起作用:

$string = "This string. has a. lot. of dots in. it."
  $string -replace '.',''

输出:空白。

为什么?

-replace 使用正则表达式 (regexp) 进行搜索,在正则表达式中,点是一个特殊字符。使用“\”转义它,它应该可以工作。参见 Get-Help about_Regular_Expressions

  1. -replace中的第一个参数是正则表达式(但第二个不是)
    '.' 是正则表达式中的一个特殊字符,表示每个字符
    $string -replace '.', '' 表示:用 '' (空白字符)
    替换每个字符 结果你得到空白字符串
    因此,为了转义正则表达式特殊字符 . 并将其视为普通字符,您必须使用 \
    对其进行转义 $string -replace '\.', ''
  2. 如果你想稍后重用你的字符串,你必须将它重写为一个变量,否则结果将会丢失
    $string = $string -replace '\.', ''

所以应该是:

$string = "This string. has a. lot. of dots in. it."
$string = $string -replace '\.', ''

然后

echo $string

结果:

This string has a lot of dots in it