Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除#区域_C#_.net_Visual Studio Addins_Region - Fatal编程技术网

C# 删除#区域

C# 删除#区域,c#,.net,visual-studio-addins,region,C#,.net,Visual Studio Addins,Region,我不得不接管一个c#项目。最初开发该软件的人深深地爱上了#region,因为他用region包装了一切。 这让我几乎发疯,我正在寻找一个工具或插件来从项目中删除所有的#region。有什么事吗?只需使用Visual Studio内置的“查找并替换”(或“在文件中替换”,您可以按Ctrl+Shift+H打开它) 要删除#region,需要启用正则表达式匹配;在“在文件中替换”对话框中,选中“使用:正则表达式”。然后,使用以下模式:“\\35; region.*\n”,将匹配项替换为”(空字符串)

我不得不接管一个c#项目。最初开发该软件的人深深地爱上了
#region
,因为他用region包装了一切。
这让我几乎发疯,我正在寻找一个工具或插件来从项目中删除所有的
#region
。有什么事吗?

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

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

要删除
\endregion
,请执行相同的操作,但使用“
\\endregion.*\n
”作为模式。正则表达式对于
#endregion
来说可能有些过分,但它不会有什么坏处(以防以前的开发人员曾经在
#endregion
或其他东西的同一行上留下注释)



注意:其他人发布的模式也应该适用于您,它们与我的模式略有不同,但您了解了总体思路。

在查找和替换中使用
{[#]您可以使用通配符查找/替换:

*\#region *
*\#endregion

并替换为无值。(注意,
需要转义,因为visual stuido使用它来匹配“任意数字”)

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

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

\\\\\\[\t]*(region | endregion)
-查找#region或#endregion(在#之后加空格的情况也非常罕见)

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

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


编辑2:在#之后添加了
[\t]*
,以处理@Volkirith发现的非常罕见的案例如果您必须与区域爱好者合作(并保持区域不变),然后我建议使用Visual Studio扩展。它使区域变得可以接受-默认情况下,所有区域都会扩展,并且#区域指令都以非常小的字体呈现。

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

.

若要删除#区域,并在其后面添加换行符,请将以下内容替换为空字符串:

^(?([^\r\n])\s)*\#region\ ([^\r\n])*\r?\n(?([^\r\n])\s)*\r?\n
^(?([^\r\n])\s)*\r?\n(?([^\r\n])\s)*\#endregion([^\r\n])*\r?\n
要将#endregion替换为前导空行,请将以下内容替换为空字符串:

^(?([^\r\n])\s)*\#region\ ([^\r\n])*\r?\n(?([^\r\n])\s)*\r?\n
^(?([^\r\n])\s)*\r?\n(?([^\r\n])\s)*\#endregion([^\r\n])*\r?\n

是的……如果需要,它也有有限的正则表达式语法。使用适当的或。这几乎让人尴尬。在visual studio的10年中,我从未使用过通配符/RegEx搜索。:-p我很想在正则表达式的末尾添加
\n
,这样就不会留下过多的空行。我只是在删除endregionWha后面的空格后才让它工作t在Find&Replace?@Timwi[^…]
中不匹配任何不在^
后面的字符集中的字符。因此,在这种情况下,该集为空,因此匹配该行中的所有字符。
{[#]区域是一件坏事,还是你说的是过度使用?在以前的一个项目中,我们被教导为每个类设置事件、构造函数、属性、公共方法、私有方法、私有变量的区域。我想这是品味的问题。我只是看不到使用它们的任何好处。对我来说,看不到代码或单击它们会让我感到不安“我不认为地区不好,但总的来说,他们有隐藏违反单一责任原则的倾向。@奥斯汀,这是我从未考虑过的事实。我不是他们的支持者,但并不厌恶使用他们。也许地区最适合于那些不能被简单化的大班。”一个原因是另一个原因。正如我对较小类的看法一样,这是杀伤力过大,而且强制执行我们以前的策略并不总是容易的。方法总是在错误的区域或区域之外,这并不少见,这会增加代码维护以遵守策略。@AndyM--我在哪里声明应该删除或避免它们?先生,你是个救命恩人!我必须继承一个项目,因为每个方法都被包装在一个区域中。每个方法!我在#和(区域)之间添加了另一个[\t]*似乎在那里有空格也是有效的,而我继承的代码中我必须清理的开发程序非常不一致。我使用的完整表达式:^[\t]*\\\\[\t]*(region | endregion)。*\n真是太棒了:)(Y)你第一段的正则表达式帮了我的忙。非常感谢。@downvorters:这与公认的答案有什么不同?你开始收到反对票可能是因为“通配符”选项在VS2012中被删除。VS2010有这个选项-比较和)。这是不公平的。太棒了!R#现在有太多很酷的功能,我已经忘记了所有可能的功能。