Visual Studio中的全局查找和替换

时间:2008-10-13 20:48:22

标签: visual-studio ide replace find

我有一个包含多个项目的解决方案,我们需要做一些严肃的全球替换。

有没有办法进行通配符替换,其中一些值在替换后仍然存在?

所以,例如,如果我希望每个 HttpContext.Current.Session [“whatevervalue”] 成为 HttpContext.Current.Session [“whatevervalue”]。ToString()传入的字符串值是否会受到尊重?我不想替换“whatevervalue”我只想在模式匹配的地方附加.ToString()。

这在Visual Studio中是否可行?

6 个答案:

答案 0 :(得分:18)

首先,备份你的项目,以防万一......在大规模更换之前总是一个好主意。

然后,在“查找/替换”对话框中,选中“使用正则表达式”复选框:

在“查找”框中,使用模式:

HttpContext\.Current\.Session\["{.@}"\]

并在替换框中,使用:

HttpContext.Current.Session["\1"].ToString()

答案 1 :(得分:4)

简单...使用正则表达式和分组。

找到什么: (HttpContext.Current.Session [“whatevervalue”])

替换为: \ 0.ToString();

请记得选中使用:并选择正则表达式

答案 2 :(得分:4)

您想要打开“查找选项”扩展器并选择“使用正则表达式”选项。完成后,您需要将这些作为查找/替换条目:

查找

HttpContext\.Current\.Session\[{("([^"]|\")*")}\]

替换:

HttpContext.Current.Session[\1].ToString()

附加说明:

启用正则表达式选项后,您将能够使用右指向三角形按钮来访问Visual Studio的Regex语法片段。

另请注意,Visual Studio的Regex语法非常少,因为自Visual Studio 6(或更早版本)以来它没有改变 - 所以不要将任何语法元素视为理所当然。

例如,有人可能会认为我的上面的正则表达式被破坏了,因为双引号之前的反斜杠没有被正确转义,但实际上,将双反斜杠放在那里会破坏表达式,而不是修复它。

答案 3 :(得分:2)

这些答案似乎都不适用于Visual Studio 2013,因为该版本似乎最终切换到标准RegEx。但是,那些非RegEx专家或那些习惯于旧的VS查找/替换RegEx语法的人会发现RegEx快捷方式按钮非常有用。

请参阅此答案以获取更多信息,包括查找/替换/环绕声示例:

Visual Studio 'Find and Surround With' instead of 'Find and Replace'

答案 4 :(得分:0)

您可以使用Visual Assist执行此类任务。它是用于不同类型重构的强大工具。

答案 5 :(得分:0)

您还可以考虑使用http://www.devexpress.com/Products/NET/IDETools/RefactorASP/

上提供的免费下载工具Refactor

它不仅仅是找到&替换,他们称之为更易理解的名称重命名成员。它的各种功能将很容易帮助您改进代码。