Исключение каталога с определенным шаблоном при использовании dir.GetDirectories - PullRequest
0 голосов
/ 03 июля 2018

Я хочу исключить имя папки '.svn "при использовании метода GetDirectories

DirectoryInfo[] dirs = dir.GetDirectories();

Я где-то читал, что параметр searchPattern для GetDirectories может поддерживать только? и * подстановочные знаки и не будут поддерживать никакие другие регулярные выражения.

Я хотел заполнить все папки, кроме папки ".svn" (например), используя DirectoryInfo [] dirs. Это возможно? Если нет, то какие у меня есть альтернативы?

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Да, MSDN говорит (https://msdn.microsoft.com/en-au/library/f3e2f6e5(v=vs.110).aspx), что шаблон поиска не поддерживает регулярное выражение. Но вы можете отфильтровать результаты по регулярному выражению на стороне клиента. Например:

var di = new DirectoryInfo("c:\\");
var dirInfos = di.GetDirectories();
var filtered = from r in dirInfos where !Regex.IsMatch(r.FullName,"$*.svn") select r;
0 голосов
/ 03 июля 2018

Ответ: DirectoryInfo [] dirs = dir.GetDirectories (). Где (x => x.Name! = ".Svn"). ToArray (); (и требуется System.Linq; пространство имен)

При условии, что все еще применимо следующее:
https://meta.stackexchange.com/questions/1555/mark-a-comment-as-answer-to-a-question

0 голосов
/ 03 июля 2018

Вы можете использовать методы linq после метода GetDirectories.

using System.Linq;
...
...
dir.GetDirectories().Where(d => !d.Name.StartsWith(".")).ToList(); //does not starts with dot.
dir.GetDirectories().Where(d => d.Name != ".svn").ToList(); //does not equal .svn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...