删除#region

时间:2011-02-22 20:17:28

标签: c# .net visual-studio-addins region

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

7 个答案:

答案 0 :(得分:58)

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

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

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


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

答案 1 :(得分:30)

使用一个正则表达式^[ \t]*\#[ \t]*(region|endregion).*\n来查找:r​​egion和endregion。用空字符串替换后,将删除带有前导空格的整行。

[ \t]* - 查找前导空格

\#[ \t]*(region|endregion) - 找到#region或#endregion(以及#之后的空格非常罕见)

.*\n - 在#region或#endregion之后找到所有内容(但在同一行中)

编辑:答案已更改为与旧的Visual Studio正则表达式语法兼容。是: ^[ \t]*\#(end)?region.*\n (问号不适用于旧语法)

编辑2:在#之后添加[ \t]*以处理由@Volkirith发现的非常罕见的案例

答案 2 :(得分:4)

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

答案 3 :(得分:3)

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

答案 4 :(得分:3)

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

More info on JetBrains

答案 5 :(得分: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

答案 6 :(得分:-2)

您可以使用通配符find / replace:

*\#region *
*\#endregion

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