删除#region

问题描述 投票:37回答:7

我不得不接管一个c#项目。首先开发软件的人深深爱上了#region,因为他用地区包装了所有东西。它让我几乎疯了,我正在寻找一个工具或插件来从项目中删除所有#region。周围有什么东西吗?

c# .net visual-studio-addins region
7个回答
63
投票

只需使用Visual Studio内置的“查找和替换”(或“替换文件”,您可以通过按Ctrl + Shift + H打开它)。

要删除#region,您需要启用正则表达式匹配;在“替换文件”对话框中,选中“使用:正则表达式”。然后,使用以下模式:“\#region .*\n”,用""(空字符串)替换匹配。

要删除#endregion,请执行相同操作,但请使用“\#endregion .*\n”作为模式。正则表达式可能对#endregion来说有点过分,但它不会受到伤害(如果之前的开发人员曾在#endregion或其他东西的同一行留下评论)。


注意:其他人也发布了适用于您的模式,它们与我的略有不同,但您会得到一般的想法。


31
投票

使用一个正则表达式^[ \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发现的非常罕见的案例


4
投票

在查找和替换中使用{[#]<region[^]*} for Find what:并将其替换为空字符串。 #EndRegion很简单,可以取代。


4
投票

对于使用ReSharper的人来说,它只是区域线上的一个简单的Atr-Enter。然后,您可以选择删除文件,项目或解决方案中的区域。

More info on JetBrains


3
投票

如果你必须与地区爱好者合作(并保持地区不变),那么我会推荐"I hate #Regions" Visual Studio扩展。它使区域可以容忍 - 默认情况下扩展所有区域,#region指令以非常小的字体呈现。


0
投票

要删除#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

-2
投票

您可以使用通配符查找/替换:

*\#region *
*\#endregion

并且没有任何价值。 (注意#需要被转义,因为visual studio使用它来匹配“任何数字”)

© www.soinside.com 2019 - 2024. All rights reserved.