我试图在几个文件中替换以下类型的字符串:
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 :(得分:1)
您需要在正则表达式中删除文字点,否则.
将匹配除换行符之外的任何字符。这样的事情应该有效:
$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
}