在VS2010中查找并替换双引号之间的所有文本

时间:2012-11-26 20:32:46

标签: c# regex visual-studio-2010 visual-studio replace

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

以下是原始代码:

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

我希望用以下内容替换文本:

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

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

3 个答案:

答案 0 :(得分:4)

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

  

查找内容:TypeBy{(.*)}\({"[^"]*"}, {"[^"]*"}\);

     

替换为:Type(\2, \3, Selector.\1);

请记住标记'使用正则表达式',你应该是金色的

有关标记表达式的更多信息,请访问here

编辑:稍微更新,因为我注意到你有名字和身份证,可能需要做一些其他的改变,这取决于你想要改变的其他小怪癖。

答案 1 :(得分: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不同

答案 2 :(得分:0)

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

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

public void Type(string str1, string str2, string str3 = "Default String")
{ 
    ...