我从一个反编译的VisualStudio项目中恢复了一个C#项目。我正在尝试恢复.Designer.cs文件,但反编译文件中的代码格式与VisualStudio期望的格式不匹配。
特别是我需要删除临时变量的使用。我正在寻找一个正则表达式,我可以在VisualStudio中使用它进行搜索和替换,以重新格式化以下类型的代码:
替换:
Label label1 = this.Label1;
Point point = new Point(9, 6);
label1.Location = point;
使用:
this.Label1.Location = new Point(9, 6);
替换:
TextBox textBox5 = this.txtYear;
size = new System.Drawing.Size(59, 20);
textBox5.Size = size;
使用:
this.txtYear.Size = new System.Drawing.Size(59, 20);
等
答案 0 :(得分:0)
这是一个正则表达式替换,适用于您给出的两个示例。我确认它在this online .NET regex tester中进行了预期的修改。
您可能需要进一步修改此正则表达式以满足您的需求。首先,我不确定您的文件中的代码有多么多样。如果将“普通”C#代码与这些三行片段混合在一起,那么这个正则表达式就会搞砸它们。您还没有指定文件中这些三行片段的分隔方式,因此您必须编辑正则表达式,以便它可以找到三行片段的开头。例如,如果所有三行代码段都以两个Windows格式的换行符开头,则可以将\r\n\r\n
添加到正则表达式的开头以检测这些换行符,并添加到替换的开头,以便保留它们。
[^=]+=\s*([^;]+);\s*\n[^=]+=\s*([^;]+);\s*\n\w+(\.[^=]+=\s*)\w+;
带有空格和注释的版本:
[^=]+=\s* # up to the = of the first line
([^;]+) # first match: everything until…
;\s*\n # the semicolon and end of the first line
[^=]+=\s* # up to the = of the second line
([^;]+) # second match: everything until…
;\s*\n # the semicolon and end of the second line
\w+ # variable name (assumed to be the first line)
(\.[^=]+=\s*) # third match: “.propertyName = ”
\w+ # variable name (assumed to be the second line)
; # semicolon at the end of the line
$1$3$2;
这等于符号后的第一行,然后是.propertyName =
,然后是等号后的第二行,然后是结束分号。