Надеюсь, вы, ребята, могли бы помочь мне стать умнее. Я делаю простой VS2012 Addin. Addin - это более широкая функциональность поиска/замены, характерная для задачи, регулярно выполняемой в нашей компании. У меня есть опция меню «Инструменты», добавленная в Visual Studio, которая должна открыть расширенный диалог «Найти/заменить», где я могу ввести несколько текстовых полей «Найти/заменить». В конце мне нужно включить флажки опций, которые доступны в исходном диалоговом окне («Match case», «Match whole word», «Use Regular Exions»).Как предоставить несколько vsFindOptions в TextDocument.ReplacePattern?
Проблема заключается в том, что в 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 ?
(Постарается это позже, но возникают проблемы отладки атм, надстройка больше не доступно в VS)
Правда, даже если я хочу применить vsFindOptionsRegularExpression AND vsFindOptionsMatchWholeWord? – Marcus
Да. См. Например [этот ответ] (http://stackoverflow.com/a/8480/1077279) – shamp00
Отлично, спасибо вам за помощь! – Marcus