4

这有效:

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

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

但这不起作用:

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

输出:空白。

为什么?

4

2 回答 2

7

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

于 2017-03-28T19:49:13.300 回答
4
  1. in 的第一个参数-replace是正则表达式(但第二个不是)
    '.'是正则表达式中的特殊字符,表示每个字符的意思是:用(blank char)
    $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

于 2018-12-19T08:20:17.587 回答