C# - 交换'='运算符的2个边

Rez*_*eza 0 regex text-editor visual-studio

如何交换'='运算符两侧的表达式?

例如我有:

a.Text = b.ID;
Run Code Online (Sandbox Code Playgroud)

我需要一个Regx来改变方面:

b.ID = a.Text;
Run Code Online (Sandbox Code Playgroud)

我想 在C#的Visual Studio的Replace窗口中使用regx

Mar*_*age 5

在C#中,您可以使用以下代码执行此操作:

var text = "a.Text = b.ID;";
var regex = new Regex(@"^(?<left>[^=\s]+)\s*=\s*(?<right>[^;]+);$");
var match = regex.Match(text);
if (match.Success) {
  var newText = String.Format(
    "{0} = {1};", match.Groups["right"].Value, match.Groups["left"].Value);
}
Run Code Online (Sandbox Code Playgroud)

正则表达式的细分:

  • ^:将匹配锚定在字符串的开头
  • (?<left>[^=\s]+):匹配至少一个不是=或空白的字符.将其捕获到名为的组left.
  • \s*=\s*:匹配=可选地由空格包围.
  • (?<right>[^;]+):匹配至少一个不是的字符;.将其捕获到名为的组right.
  • ;:匹配;.
  • $:将匹配锚定到字符串的末尾.

如果要在Visual Studio编辑器中执行类似的替换,则需要在" 快速替换"对话框中使用以下值:

  • 找到什么:{[^=:b]+}:b*=:b*{[^;]+}
  • 替换为:\2 = \1
  • 使用:正则表达式

主要的区别是,组由括号定义,而不是圆括号和空格字符组由表示:b,不会\s.


akt*_*ton 5

在Visual Studio的"替换文件"对话框中,([^= ]*) = ([^= ]*);在"查找内容"文本框和$2 = $1;"替换为"对话框中输入.例如,在Visual Studio 2012中:

在此输入图像描述