0

我希望你们能帮助我变得更聪明。我正在制作一个简单的 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 中的插件不再可用)

4

1 回答 1

1

您应该能够使用按位或运算符“|”,所以

[...].ReplacePattern(@"<span (.\w.+?>)", string.Empty,
    vsFindOptions.vsFindOptionsRegularExpression | 
    vsFindOptions.vsFindOptionsMatchWholeWord);
于 2013-05-24T08:57:41.507 回答