我希望你们能帮助我变得更聪明。我正在制作一个简单的 VS2012 插件。插件是针对我们公司定期执行的任务的更广泛的搜索/替换功能。我在 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 中出现调试问题,vs 中的插件不再可用)