在我的Visual Studio(2010 C#)解决方案中,我需要删除包含匹配字符串模式的所有代码行。例如,我想删除所有包含“.BackColor = System.Drawing.Color.Yellow;“。Visual Studio的”查找和替换“功能还不够好,因为您无法让它清除匹配行。所以我想我需要一个宏来实现这一点。任何帮助都不胜感激。
q3qa4bjr1#
您可以使用Visual Studio的“查找和替换”功能删除匹配行。关键是要匹配整行,包括行尾字符。您可以在通配符或正则表达式模式下执行此操作。在通配符模式下,表达式以*开始,以*\n结束。星号将匹配任意数量的字符,而\n将匹配行尾字符。在您的情况下,您的查找查询将是“*.BackColor = System.Drawing.Color.Yellow;*\n“。替换字段应保留为空。要启用通配符模式,请在“查找和替换”对话框的“查找选项”部分的“用途:”字段中选择“通配符”。
*
*\n
\n
*.BackColor = System.Drawing.Color.Yellow;*\n
niknxzdl2#
在Visual Studio 2015,2017,2019,2022中,这对我很有效。打开搜索窗口,选中“使用正则表达式”复选标记。用
.*myCodeFragmentHere.*\r?\n
用空字符串填充“replace”。从搜索表达式的代码片段中删除所有regexp(方括号、点)。
8wtpewkr3#
我倾向于在VS中创建宏,方法是运行宏记录器,然后编辑生成的代码。因此,手动搜索图案,然后按F3。然后停止宏(或按行开始键,选择到行尾,按删除,然后停止宏)。编辑宏时,删除一行的命令是:
DTE.ActiveDocument.Selection.SelectLine() DTE.ActiveDocument.Selection.Delete()
您可以使用FindText设定寻找文字:
DTE.ActiveDocument.Selection.FindText(".BackColor = System.Drawing.Color.Yellow;", vsFindOptions.vsFindOptionsFromStart)
inkz8wg94#
基于@HolgerJeromin的回答:与其猜测正确的缩进匹配(可能是制表符,可能是空格,可能更多或更少),我更喜欢使用^\s*模式匹配行的开头。例如,要删除所有具有ProducesResponseType属性的行,我使用
^\s*
ProducesResponseType
^\s*\[ProducesResponseType.*\n
(使用VS 2019也可以在Windows上工作)。
3wabscal5#
对于Visual Studio 2015(其中没有宏和通配符),我执行了以下操作:
({代码字符串行})\r?\n({下一行制表符})
凡─
{line of code string}=要移除的代码行。请注意,您需要使用反斜杠()转义括号和引号等字符{下一行制表符}=下一行代码之前的空格数(如果不这样做,您的行将被删除,但下一行之前的空格数将增加一倍
例如,要删除DoSomething(“你好”);从-
class A { void SomeMethod() { DoSomething("hello"); DoSomethingElse(); } }
更换以下部件(做某事(“你好”))\r?\n({ })
ffvjumwh6#
我试图删除一个属性(在我的例子中是[OperationContract]),但其他答案都不起作用。\[OperationContract\]\r\n\t\t(使用正则表达式)
\[OperationContract\]\r\n\t\t
6条答案
按热度按时间q3qa4bjr1#
您可以使用Visual Studio的“查找和替换”功能删除匹配行。
关键是要匹配整行,包括行尾字符。您可以在通配符或正则表达式模式下执行此操作。在通配符模式下,表达式以
*
开始,以*\n
结束。星号将匹配任意数量的字符,而\n
将匹配行尾字符。在您的情况下,您的查找查询将是“
*.BackColor = System.Drawing.Color.Yellow;*\n
“。替换字段应保留为空。要启用通配符模式,请在“查找和替换”对话框的“查找选项”部分的“用途:”字段中选择“通配符”。
niknxzdl2#
在Visual Studio 2015,2017,2019,2022中,这对我很有效。打开搜索窗口,选中“使用正则表达式”复选标记。用
用空字符串填充“replace”。
从搜索表达式的代码片段中删除所有regexp(方括号、点)。
8wtpewkr3#
我倾向于在VS中创建宏,方法是运行宏记录器,然后编辑生成的代码。
因此,手动搜索图案,然后按F3。然后停止宏(或按行开始键,选择到行尾,按删除,然后停止宏)。
编辑宏时,删除一行的命令是:
您可以使用FindText设定寻找文字:
inkz8wg94#
基于@HolgerJeromin的回答:与其猜测正确的缩进匹配(可能是制表符,可能是空格,可能更多或更少),我更喜欢使用
^\s*
模式匹配行的开头。例如,要删除所有具有
ProducesResponseType
属性的行,我使用(使用VS 2019也可以在Windows上工作)。
3wabscal5#
对于Visual Studio 2015(其中没有宏和通配符),我执行了以下操作:
({代码字符串行})\r?\n({下一行制表符})
凡─
{line of code string}=要移除的代码行。请注意,您需要使用反斜杠()转义括号和引号等字符
{下一行制表符}=下一行代码之前的空格数(如果不这样做,您的行将被删除,但下一行之前的空格数将增加一倍
例如,要删除
DoSomething(“你好”);
从-
更换以下部件
(做某事(“你好”))\r?\n({ })
ffvjumwh6#
我试图删除一个属性(在我的例子中是[OperationContract]),但其他答案都不起作用。
\[OperationContract\]\r\n\t\t
(使用正则表达式)