我不得不接管一个c#项目。首先开发软件的人深深地爱着#region
,因为他用区域包装了所有东西。
它让我几乎疯了,我正在寻找一个工具或插件来从项目中删除所有#region
。周围有什么东西吗?
答案 0 :(得分:58)
只需使用Visual Studio内置的“查找和替换”(或“替换文件”,您可以通过按 Ctrl + Shift + 打开它ħ)。
要删除#region
,您需要启用正则表达式匹配;在“替换文件”对话框中,选中“使用:正则表达式”。然后,使用以下模式:“\#region .*\n
”,用""
替换匹配(空字符串)。
要删除#endregion
,请执行相同操作,但请使用“\#endregion .*\n
”作为模式。正则表达式可能对#endregion
来说是过度杀伤,但它不会受到伤害(如果之前的开发人员曾在#endregion
或其他内容的同一行留下评论。)< / p>
注意:其他人也发布了适用于您的模式,它们与我的略有不同,但您会得到一般的想法。
答案 1 :(得分:30)
使用一个正则表达式^[ \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发现的非常罕见的案例
答案 2 :(得分:4)
在查找和替换中使用{[#]<region[^]*}
Find what:
并将其替换为空字符串。
#EndRegion
很简单,可以替换。
答案 3 :(得分:3)
如果你必须与地区爱好者合作(并保持地区不变),那么我建议"I hate #Regions" Visual Studio扩展。它使区域可以容忍 - 默认情况下扩展所有区域,#region指令以非常小的字体呈现。
答案 4 :(得分:3)
对于使用ReSharper的任何人来说,它只是区域线上的一个简单的Atr-Enter。然后,您可以选择删除文件,项目或解决方案中的区域。
答案 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使用它来匹配“任何数字”)