Powershell,用SPACE替换DOT

时间:2017-03-28 19:44:54

标签: powershell character-replacement

这有效:

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

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

但这不起作用:

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

输出:空白。

为什么呢?

2 个答案:

答案 0 :(得分:3)

-replace使用正则表达式(regexp)进行搜索,在正则表达式中,点是一个特殊字符。使用' \'来逃避它,它应该有效。请参阅Get-Help about_Regular_Expressions

答案 1 :(得分:0)

  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