【问题标题】:Find and Replace All But Text Between Double Quotes in VS2010在VS2010中查找和替换双引号之间的所有文本
【发布时间】:2012-11-14 09:24:31
【问题描述】:

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

这是原始代码:

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

我想用以下内容替换文本:

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

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

【问题讨论】:

  • 未引用的文本是否始终相同?
  • 是的。唯一改变的是引用的文本。

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


【解决方案1】:

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

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

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

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

关于标记表达式的更多信息可以找到here

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

【讨论】:

  • @ebyrob 是的,我试了几次才把它弄好,这实际上是我以前在 VS 中从未使用过的东西,非常酷的功能(虽然有点小众)。
  • 我总是尝试不带花括号,我认为这就是我过去遇到这么多麻烦的原因。 (我通常会为这些东西掏腰包,而不是呆在 IDE 中)
  • +1。在构建搜索/替换表达式时,有时在搜索/替换字段旁边使用辅助“三角形”按钮会有所帮助 - 它为您提供带有解释的基本表达式,而无需搜索语法。
【解决方案2】:

您可以在 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 可能有所不同

【讨论】:

  • 我在VS2010中尝试了第二个,它似乎没有用。感谢您提供如此彻底的答案!
【解决方案3】:

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

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

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

【讨论】:

  • 我想通过查找和替换来完成此操作,而不是通过代码。
  • 我考虑过重构,但这是由于多个方法被删除并合并为 1 个方法,并添加了第三个参数以指定要查找的“选择器”。
  • @Andrew 我刚刚删减了我的帖子以反映这一点
  • @Andrew 您还可以进行多次查找/替换迭代,而不仅仅是 1
猜你喜欢
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2020-01-24
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多