2016-11-03 6 views
1

$(foo)\barのすべての文字列を$(foo)\baz\barリテラル文字列に置き換えようとしていますが、何も展開する必要はなく、regexを使う必要はありません。PowerShell:ReplaceとContainsオペレーションのエスケープ文字

これは私のコードです:

if($myString.contains("$(foo)\bar\")) 
{ 
    $myString = $myString -replace "$(foo)\bar\","$(foo)\baz\bar\" 
    ... 
} 

それは動作しません、私は完全にどのように、いつ、どこで$(\などの文字をエスケープする迷ってしまいました。文字列に一重引用符または二重引用符を使用する必要がありますか?

これは私の試みです:

if($myString.contains("`$(foo)\\bar\\")) 
{ 
    $myString = $myString -replace '\$(foo)\\bar\\','\$(foo)\\baz\\bar\\' 
    ... 
} 
+0

'$のmyString = $ myString.Replace:メソッドは、正規表現を使用していないので、何のエスケープは必要ありません。 ' – PetSerAl

答えて

1

-replaceコマンドは、常に正規表現で動作します。文字列を正しくエスケープするか、文字列オブジェクトのメソッド.replaceを使用することができます。 ( ')\バー\ $(foo' で、 '$(FOO)を\バズ\棒\')

if($myString.contains("`$(foo)\\bar\\")) 
{ 
$myString = $myString.replace('$(foo)\bar\','$(foo)\baz\bar\') 
... 
} 
関連する問題