5

在 Visual Studio 2010 中使用快速替换,我如何替换除双引号括起来的所有文本。我不确定是否可以使用 WildCards 或 Regex 来执行此操作。下面是一个例子。

这是原始代码:

TypeByName("bPhone3", "9999");
TypeById("bFirstName", "Don");

我想用这样的东西替换文本:

Type("bPhone3", "9999", Selector.Name);
Type("bFirstName", "Don", Selector.Id);

我正在这样做进行数百次更改,因此“快速替换”是我现在唯一真正的选择。我需要找到一种方法将任何内容保留在引号中并更改其周围的文本。

4

3 回答 3

4

所以我在修改 Visual Studio 的查找和替换选项,这实际上可以使用 RegEx 和标记表达式。我使用了它,它适用于您列出的字符串。

找什么:TypeBy{(.*)}\({"[^"]*"}, {"[^"]*"}\);

用。。。来代替:Type(\2, \3, Selector.\1);

记得标记“使用正则表达式”,你应该是金色的

有关标记表达式的更多信息,请参见此处

编辑:更新了一点,因为我注意到您同时拥有姓名和 ID,可能需要根据您想要更改的其他小怪癖进行一些其他更改。

于 2012-11-26T20:58:31.553 回答
3

您可以使用 Visual Studio 中的正则表达式查找和替换:

查找:TypeByName\((\".+?\"),\ (\".+?\")\);
替换:Type($1, $2, Selector.Name);

这会
TypeByName("bPhone3", "9999");变成
Type("bPhone3", "9999", Selector.Name);

编辑
你也可以这样做:

查找:TypeBy(.+)\((\".+?\"),\ (\".+?\")\);
替换:Type($2, $3, Selector.$1);

哪个会
TypeByName("bPhone3", "9999");变成
Type("bPhone3", "9999", Selector.Name);
AND
TypeById("bFirstName", "Don");
Type("bFirstName", "Don", Selector.Id);

它基本上变成TypeBy{1}({2}, {3})Type({2}, {3}, Selector.{1})

请注意,我在 VS2012 中对此进行了测试,对于 VS2010 可能有所不同

于 2012-11-26T20:57:06.240 回答
0

也许您正在寻找一个重构引擎,您可以在其中右键单击一个符号,然后转到refactor然后rename

对于您的特定解决方案,您也可以从重构开始,然后玩弄默认参数

public void Type(string str1, string str2, string str3 = "Default String")
{ 
    ...
于 2012-11-26T20:37:51.887 回答