Мне пришлось взять на себя проект C#. Парень, который разработал программное обеспечение, в первую очередь был глубоко влюблен в #region
, потому что он завернул все в регионы. Это делает меня почти сумасшедшим, и я искал инструмент или аддон, чтобы удалить все из #region
из проекта. Есть что-то вокруг?удаление #области
ответ
Просто используйте Visual Studio встроенный «Найти и заменить» (или «Заменить в файлах», который можно открыть, нажав Ctrl + сдвиг + H).
Чтобы удалить #region
, вам необходимо включить регулярное выражение; в диалоговом окне «Заменить в файлах» установите флажок «Использовать: регулярные выражения». Затем используйте следующий шаблон: «\#region .*\n
», заменив совпадения на ""
(пустая строка).
Чтобы удалить #endregion
, сделайте то же самое, но используйте «\#endregion .*\n
» в качестве вашего шаблона. Регулярные выражения могут быть overkill для #endregion
, но это не помешает (в случае, если предыдущий разработчик оставлял комментарии на той же строке, что и #endregion
или что-то в этом роде).
Примечание: Другие выложили образцы, которые должны работать для вас, как хорошо, они немного отличаются, чем у меня, но вы получите общее представление.
Это сумасшедший разговор. – RQDQ
Yep ... он также имеет ограниченный синтаксис RegEx, если это необходимо. – Oded
Используйте соответствующие [regexp] (http://msdn.microsoft.com/en-us/library/2k3te2cs%28v=VS.100%29.aspx) или [подстановочные знаки] (http://msdn.microsoft.com/ ан-нас/библиотека/afy96z92% 2 = VS.100% 29.aspx). – Vlad
В поиске и замене используйте {[#]<region[^]*}
для Find what:
и замените его на пустую строку. #EndRegion
достаточно просто заменить.
Что делает '[^]' in Find & Replace? – Timwi
@Timwi [^ ...] 'Соответствует любому символу, который не находится в наборе символов, следующих за символом ^. Таким образом, в этом случае набор пуст, поэтому соответствует всем в этой строке. –
Тогда почему бы просто не использовать '.'? – Timwi
Вы можете использовать подстановочные поиска/замены:
*\#region *
*\#endregion
И заменить никакой ценности. (Обратите внимание, что #
необходимо экранировать, так как визуальный stuido использует его для соответствия «любому числу»)
@ downvoters: Как это отличается от принятого ответа? –
Вы начали получать пустые голоса, вероятно, потому, что опция «подстановочные знаки» была удалена в VS2012. VS2010 имел этот вариант - сравните https://msdn.microsoft.com/en-us/library/a40ywt0a(v=vs.100).aspx и https://msdn.microsoft.com/en-us/library/a40ywt0a (v = vs.110) .aspx). Так не честно. – CoperNick
Используйте одно регулярное выражение ^[ \t]*\#[ \t]*(region|endregion).*\n
, чтобы найти и регион, и область конца. После замены пустой строкой вся строка с ведущими пробелами будет удалена.
[ \t]*
- находит ведущие пробелы
\#[ \t]*(region|endregion)
- находит #region или #endregion (а также очень редкий случай с пробелами после #)
.*\n
- находит все после #region или #endregion (но в такая же строка)
EDIT: ответ изменен, чтобы быть совместимым со старым синтаксисом regex для Visual Studio. Был:
(знаки вопроса не работают на старый синтаксис)^[ \t]*\#(end)?region.*\n
EDIT 2: Добавлен [ \t]*
после # обрабатывать очень редкий случай, найденного @Volkirith
Ты, сэр, спасатель! Я должен был наследовать проект, каждый метод был завернут в регион. Каждый метод! – Draco
Я добавил еще один [\ t] * между # и (region) -> он также имеет место, чтобы иметь пробелы, а dev, который я унаследовал от кода, который я должен был очистить, был довольно непоследовательным. Полное выражение, которое я использовал:^[\ t] * \ # [\ t] * (region | endregion). * \ N – Volkirith
Действительно Awsome :) (Y) –
Если вы должны сотрудничать с любителями региона (и держать регионы нетронутые), то я бы порекомендовал "I hate #Regions" расширение Visual Studio. Это делает регионы допустимыми - все регионы расширены по умолчанию, а директивы #region отображаются очень маленьким шрифтом.
Для всех, кто использует ReSharper, это просто простой Atr-Enter на линии региона. После этого у вас будет возможность удалить регионы в файле, в проекте или в решении.
awesome! В R # теперь так много интересных функций, что я потерял все возможное. – gsharp
Чтобы удалить #region с новой строкой после него, замените следующий с пустой строкой:
^(?([^\r\n])\s)*\#region\ ([^\r\n])*\r?\n(?([^\r\n])\s)*\r?\n
Чтобы заменить #endregion с ведущей пустой строкой, заменить следующий с пустой строкой:
^(?([^\r\n])\s)*\r?\n(?([^\r\n])\s)*\#endregion([^\r\n])*\r?\n
Есть регионы плохо, или вы говорите о чрезмерном использовании? В предыдущем проекте нас учили настраивать регионы для событий, конструкторов, свойств, общедоступных методов, частных методов, частных переменных для каждого класса. – JonWillis
Я думаю, это вопрос вкуса. Я просто не вижу никакой пользы в их использовании. Для меня это мешает не видеть код или щелкнуть по региону, чтобы открыть его. – gsharp
@JonWillis - В целом я не думаю, что регионы плохи, но у них есть тенденция скрывать нарушения принципа единой ответственности. –