在Visual Studio中反转分配方向

Ed *_*mes 23 regex visual-studio

我在Visual Studio中有一堆赋值操作,我想要反转它们:即

i = j;
会成为

j = i;
Run Code Online (Sandbox Code Playgroud)

即在等于之后等于等于之后的所有内容,反之亦然

有没有简单的方法可以做到这一点,在正则表达式引擎中说些什么?

干杯,艾德

Chr*_*ett 31

选择要交换的行,Ctrl + H,然后替换:

{:i}:b*=:b*{:i};
Run Code Online (Sandbox Code Playgroud)

有:

\2 = \1;
Run Code Online (Sandbox Code Playgroud)

将"Look in:"设置为"Selection"

但是,它只处理C/C++样式标识符(通过":i").替换为:

{.*}:b*=:b*{.*};
Run Code Online (Sandbox Code Playgroud)

替换"="两侧的任何内容.

此外,由于您在评论中提到使用ReSharper,您只需突出显示"=",Alt + Enter和"反向分配".


tin*_*tin 15

克里斯的答案略有改善......

按Ctrl + H,然后替换:

{:b*}{[^:b]*}:b*=:b*{[^:b]*}:b*;
Run Code Online (Sandbox Code Playgroud)

有:

\1\3 = \2;
Run Code Online (Sandbox Code Playgroud)

(更好地处理空白,尤其是在行首)

编辑: 对于Visual Studio 2012及更高版本(我在2015年尝试过):替换

(\s*)([^\s]+)\s*=\s*([^\s]+)\s*;
Run Code Online (Sandbox Code Playgroud)

有:

$1$3 = $2;
Run Code Online (Sandbox Code Playgroud)


Jal*_*lal 6

在 Visual Studio 2015+ 中,选择代码块后,按Ctrl + H(查找和替换窗口)并选中“使用正则表达式”选项,然后:

寻找:(\w+.\w+) = (\w+);

代替:$2 = $1;

例如:

entity.CreateDate = CreateDate;
Run Code Online (Sandbox Code Playgroud)

更改为:

CreateDate = entity.CreateDate;
Run Code Online (Sandbox Code Playgroud)

谢谢@Nagesh 和Revious,添加了提到的详细信息。