2013-08-19 58 views
1

我想在幾個文件來替換以下類型的字符串之間的字符串:如何更換其他兩個字符串

StringResourceHelper [STRING_OF_INTEREST]資源字符串()字符串[STRING_OF_INTEREST]

例如我想替換:

StringResourceHelper.HelpResourceString()Strings.Help

到目前爲止,我有一個簡單的替換,如果第二個字符串不會是重要的,其將工作:

Get-ChildItem . *.cs -Recurse | 
     Foreach-Object { 
     $c = ($_ | Get-Content) 
     $c = $c -replace 'StringResourceHelper.','Strings.' 
     $c | Set-Content $_.FullName -Encoding UTF8 
    } 

但是,這並不能幫助我,因爲我也有喜歡字符串StringResourceHelper.Culture不應該被觸摸。

任何幫助表示讚賞。

回答

0

您需要在正則表達式中轉義字面點,否則.將匹配除換行符之外的任何字符。像這樣的東西應該工作:

$c = $c -replace 'StringResourceHelper\.(\w*?)ResourceString\(\)', 'Strings.$1' 

而且,你的代碼可以簡化一點,像這樣:

$srch = 'StringResourceHelper\.(\w*?)ResourceString\(\)' 
$repl = 'Strings.$1' 

Get-ChildItem . *.cs -Recurse | % { 
    $filename = $_.FullName 
    (Get-Content $filename) -replace $srch, $repl | 
     Set-Content $filename -Encoding UTF8 
} 
+0

非常感謝,它的工作原理就像一個魅力。 –

相關問題