我想在C#代码中替换对资源文件的所有引用。
一个示例是包含多个引用的页面,例如:
Resources.Global.Firstname
Resources.Global.Surname
我希望正则表达式找到所有这些(它们可能以;
或)
结束。
使用正则表达式的初学者总数,因此我们将非常感激地收到任何建议。
答案 0 :(得分:3)
您可以在Visual Studio中使用“查找和替换”窗口。
Resources\.Global\.{[^,) ;]+}
放入“查找内容:”文本框中。GetStringValue("\1")
放入“替换为:”文本框中。第一个正则表达式将找到以Resources.Global.
开头的任何内容并捕获它之后的任何内容,直到它找到空格,逗号,关闭的paren或分号。
第二个替换了GetStringValue("")
找到的整个文本,并将捕获的文本放在括号中的引号内。
答案 1 :(得分:1)
为什么不用CTRL + H(快速查找和替换)并搜索实际条款而不是正则表达式模式?你想要重命名的是什么?
UPDATE 匹配的模式类似于:Resources.Global。([^};] +)
替换模式将是GetStringValue(“\ 1”)
答案 2 :(得分:0)
正如Blazes所说,在你提到的场景中,Refactoring是真正的答案。如果您只想查看它们,请右键单击定义并选择查找所有引用。如果你想改变它,只需进行更改,然后按ctrl + shift + F11,会出现一个上下文菜单,让你有机会重命名所有引用。
答案 3 :(得分:0)
正则表达式:
(Resources\.Global\.[A-Z][a-zA-Z]*[;\)])
将仅查找以下测试行中的最后两行:
Resources.Global.Firstname
Resources.Global.Surname
Resources.Global.Firstname;
Resources.Global.Surname)
使用代码验证:
Regex regex = new Regex(@"(Resources\.Global\.[A-Z][a-zA-Z]*[;\)])");
MatchCollection mc = regex.Matches("Resources.Global.Firstname\n" +
"Resources.Global.Surname" +
"Resources.Global.Firstname;" +
"Resources.Global.Surname)");
foreach (Match match in mc)
{
Console.WriteLine(match.Groups[1].ToString());
}
该软件可能对您有所帮助: