我的代码中有一个替换语句,Band正在被Cig取代。然而,当我把单引号时,它采取了第一句话......示例'乐队'
我尝试使用双引号,但它不起作用。你知道怎么逃避单引号吗?
-replace 'Band's', 'Cig's'
答案 0 :(得分:7)
从内置帮助中查看Escape characters, Delimiters and Quotes和Get-Help about_Quoting_Rules
(如Nacimota所指出的那样)。
要在单引号字符串中加入'
,只需将其加倍''
即可。 (单引号文字不支持任何其他转义字符。)
> "Band's Toothpaste" -replace 'Band''s', 'Cig''s'
或者,只需切换到双引号即可。 (当希望使用插值或转义字符时,需要双引号文字。)
> "Band's Toothpaste" -replace "Band's", "Cig's"
(不要忘记-replace
使用正则表达式)
答案 1 :(得分:3)
使用两个单引号转义单引号:
"Band's Toothpaste" -replace 'Band''s', 'Cig''s'
答案 2 :(得分:3)
对于普通情况,您可以使用嵌入的转义字符。对于更复杂的情况,您可以使用here-strings。
$Find = [regex]::escape(@'
Band's
'@)
$Replace = @'
Cig's
'@
"Band's Toothpaste" -replace $Find,$Replace
然后将要搜索的文字文本放在here-strings中。
正常引用规则不适用于here-string @' - ' @ delimiters,所以你可以在任何你想要的地方放置你想要的任何类型的引号,而不需要任何转义字符。
$ Find上的[regex] :: excape()将处理可能在搜索模式中的任何正则表达式保留字符的反斜杠转义。