我不得不接管一个c#项目。首先开发软件的人深深爱上了#region
,因为他用地区包装了所有东西。它让我几乎疯了,我正在寻找一个工具或插件来从项目中删除所有#region
。周围有什么东西吗?
只需使用Visual Studio内置的“查找和替换”(或“替换文件”,您可以通过按Ctrl + Shift + H打开它)。
要删除#region
,您需要启用正则表达式匹配;在“替换文件”对话框中,选中“使用:正则表达式”。然后,使用以下模式:“\#region .*\n
”,用""
(空字符串)替换匹配。
要删除#endregion
,请执行相同操作,但请使用“\#endregion .*\n
”作为模式。正则表达式可能对#endregion
来说有点过分,但它不会受到伤害(如果之前的开发人员曾在#endregion
或其他东西的同一行留下评论)。
注意:其他人也发布了适用于您的模式,它们与我的略有不同,但您会得到一般的想法。
使用一个正则表达式^[ \t]*\#[ \t]*(region|endregion).*\n
找到:region和endregion。用空字符串替换后,将删除带有前导空格的整行。
[ \t]*
- 找到领先的空间
\#[ \t]*(region|endregion)
- 找到#region或#endregion(在#之后也是非常罕见的空格)
.*\n
- 在#region或#endregion之后找到所有内容(但在同一行)
编辑:答案已更改为与旧的Visual Studio正则表达式语法兼容。是:
^[ \t]*\#(end)?region.*\n
(问号不适用于旧语法)
编辑2:在#之后添加了[ \t]*
以处理由@Volkirith发现的非常罕见的案例
在查找和替换中使用{[#]<region[^]*}
for Find what:
并将其替换为空字符串。 #EndRegion
很简单,可以取代。
对于使用ReSharper的人来说,它只是区域线上的一个简单的Atr-Enter。然后,您可以选择删除文件,项目或解决方案中的区域。
如果你必须与地区爱好者合作(并保持地区不变),那么我会推荐"I hate #Regions" Visual Studio扩展。它使区域可以容忍 - 默认情况下扩展所有区域,#region指令以非常小的字体呈现。
要删除#region后面的换行符,请将以下替换为空字符串:
^(?([^\r\n])\s)*\#region\ ([^\r\n])*\r?\n(?([^\r\n])\s)*\r?\n
要将#endregion替换为前导空行,请将以下替换为空字符串:
^(?([^\r\n])\s)*\r?\n(?([^\r\n])\s)*\#endregion([^\r\n])*\r?\n
您可以使用通配符查找/替换:
*\#region *
*\#endregion
并且没有任何价值。 (注意#
需要被转义,因为visual studio使用它来匹配“任何数字”)