我希望你们能帮助我变得更聪明。我正在制作一个简单的VS2012 Addin。 Addin是一种更广泛的搜索/替换功能,专门用于我们公司定期执行的任务。我在Visual Studio中添加了一个工具菜单选项,该选项应该打开一个扩展的查找/替换对话框,我可以在其中输入多个查找/替换文本框。最后,我需要包含原始对话框中可用的选项复选框(“匹配大小写”,“匹配整个单词”,“使用正则表达式”)。
问题在于,在ReplaceText或ReplacePattern方法中,它们只允许传递一个可选的int参数,用于提供一个选项的枚举是vsFindOptions,如下所示:
[Guid("A457303F-D058-4415-A2B4-A81B148C7689")]
public enum vsFindOptions
{
vsFindOptionsNone = 0,
vsFindOptionsMatchWholeWord = 2,
vsFindOptionsMatchCase = 4,
vsFindOptionsRegularExpression = 8,
vsFindOptionsBackwards = 128,
vsFindOptionsFromStart = 256,
vsFindOptionsMatchInHiddenText = 512,
vsFindOptionsWildcards = 1024,
vsFindOptionsSearchSubfolders = 4096,
vsFindOptionsKeepModifiedDocumentsOpen = 8192,
}
我正在浏览MSDN [1]的文档,在那里我可以看到一个例子:
[...].ReplacePattern("test", "done deal",
(int)vsFindOptions.vsFindOptionsNone, ref dummy);
这一切都很好,但我想做的更像是这样:
[...].ReplacePattern(@"<span (.\w.+?>)", string.Empty,
(int)vsFindOptions.vsFindOptionsRegularExpression,
(int)vsFindOptions.vsFindOptionsMatchWholeWord);
考虑原始的查找/替换对话框 - 选项是复选框,这个多选项但是ReplacePattern方法只接受一个int。我可以简单地将这些值一起添加:
(int)vsFindOptions.vsFindOptionsRegularExpression+
(int)vsFindOptions.vsFindOptionsMatchWholeWord ?
(稍后会尝试这个,但是调试问题atm,addin在vs中不再可用)
答案 0 :(得分:1)
你应该能够使用按位OR运算符'|',所以
[...].ReplacePattern(@"<span (.\w.+?>)", string.Empty,
vsFindOptions.vsFindOptionsRegularExpression |
vsFindOptions.vsFindOptionsMatchWholeWord);