Directory.GetFiles: показывать только файлы, начинающиеся с числового значения

Как я могу заставить Directory.GetFiles показывать только файлы, начинающиеся с числового значения (например, 1abc.pdf);

Directory.GetFiles(@"C:/mydir", "0-9*.pdf")

2 ответа

Решение

Чтобы получить файлы, которые начинаются с любого числового значения, независимо от количества цифр, вы можете использовать регулярное выражение:

var files = Directory.GetFiles(@"c:\mydir", "*.pdf")
                     .Where(file => Regex.IsMatch(Path.GetFileName(file), "^[0-9]+"));
                     //.ToArray() <-add if you want a string array instead of IEnumerable

Нет способа указать это непосредственно в шаблоне поиска. Его возможности довольно ограничены (в основном поддерживает * подстановочные). Лучший способ сделать это - отфильтровать *.pdf а затем использовать запрос LINQ для фильтрации к тем, которые начинаются с цифры

Directory
  .GetFiles(@"c:\mydir", "*.pdf")
  .Where(x => Char.IsDigit(Path.GetFileName(x)[0]));
Другие вопросы по тегам