【问题标题】:How can I reverse code around an equal sign in Visual Studio?如何在 Visual Studio 中反转等号周围的代码?
【发布时间】:2022-02-26 14:42:27
【问题描述】:

编写代码以从对象填充文本框后,例如:

txtFirstName.Text = customer.FirstName;
txtLastName.Text = customer.LastName;
txtAddress.Text = customer.Address;
txtCity.Text = customer.City;

在 Visual Studio(或什至像 Resharper 之类的东西)中有没有办法将此代码复制并粘贴到保存函数中,并将等号周围的代码反转,使其看起来像:

customer.FirstName = txtFirstName.Text;
customer.LastName = txtLastName.Text;
customer.Address = txtAddress.Text;
customer.City = txtCity.Text;

【问题讨论】:

标签: c# visual-studio-2008


【解决方案1】:

VS2012 之前:

  • 复制并粘贴原始代码块
  • 在要切换的地方再选择一次
  • 按 Ctrl-H 以打开“替换”框
  • 在“查找内容”下输入:{[a-zA-Z\.]*} = {[a-zA-Z\.]*};
  • 在“替换为”下输入:\2 = \1;
  • 查看:“选择”
  • 使用:“正则表达式”
  • 点击全部替换

使用 .NET 正则表达式的 VS2012(可能是更高版本):

  • 复制并粘贴原始代码块
  • 在要切换的地方再选择一次
  • 按 Ctrl-H 以打开“替换”框
  • 在“查找内容”下输入:([a-zA-Z\.]*) = ([a-zA-Z\.]*);
  • 在“替换为”下输入:${2} = ${1};
  • 确保选中.*(正则表达式)图标(替换文本框下方的第三个)
  • 点击全部替换

【讨论】:

  • 这个适用于带有数字的变量名。 ([\w\.]+) = ([\w\.]+);
  • 这似乎在 vs2017 或 vs2019 中都不起作用。我总是找不到错误。
  • @Louis:您能否举一个您希望找到的文本的具体示例,以便我们尝试重现该文本?我看不出有任何理由它不能按书面形式工作,除非(例如)你的 = 符号周围没有空格。
  • @Jon Skeet:我只是尝试做与 OP 相同的任务。您的解决方案似乎很简单。我只是不确定为什么不在 vs2019 中工作。目前,我使用 Resharper,效果很好。
  • @Louis:同样,如果没有真正具体的示例,很难帮助您。我可以尝试自己做一个例子,发现它有效,然后就没有更好的位置来帮助你,浪费了我的时间。如果你提供一个具体的例子,我不会浪费我的时间,你会尽快得到答案。
【解决方案2】:

据我所知没有。当然,如果您使用许多可用的绑定方法中的一种,则不必这样做 - 绑定将在两个方向上进行更新(包括通过通知进行更改)。

所以对于winforms:

txtFirstName.DataBindings.Add("Text", customer, "FirstName");

【讨论】:

    【解决方案3】:

    我有同样的需求,但在 John 提供的解决方案中,我必须接受比 a-zA-Z\. 更多的字符,所以我稍微修改了它的常规异常,如下所示:

    查找内容:{^[^\=]*} = {.*}

    替换为:\2 = \1

    这将反转 anything 围绕在一行中找到的第一个等号

    【讨论】:

      【解决方案4】:

      首先使用 Resharper 以这种方式将它们放入其中的一个选项是定义一个类似于以下内容的实时模板:

      $uiElement$ = $dto$;
      $dto$ = $uiElement$;
      

      这将允许您键入一次,它会为您复制它,然后您可以将保存版本剪切并粘贴到其他方法。

      【讨论】:

        【解决方案5】:

        搜索词对我有用的正则表达式:

        搜索 ([^= ]*) = ([^= ]*);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-12
          • 2018-03-21
          • 2015-10-27
          • 1970-01-01
          • 1970-01-01
          • 2022-11-09
          相关资源
          最近更新 更多