Как читать файлы, делая фильтр? - PullRequest
0 голосов
/ 14 апреля 2011

Мне нужно сделать чтение в некоторых каталогах, проблема в том, что мне нужно сделать фильтр по имени файла.

Пример: "1000123107.jpg", "1700123107.jpg", "1005123101.jpg", "1077123107.jpg", мне нужно получить изображения, заканчивающиеся символом "7.jpg", в данном случае: только "1000123107.jpg", я пытаюсь с этим:

string[] filePaths = System.IO.Directory.GetFiles(
     filePath + "\\", "*7.jpg", SearchOption.AllDirectories);

Но не сработает, потому что получают также другие изображения, которые имеют "7" в начале или в середине. ("1000123107.jpg" и "1700123107.jpg" и "1077123107.jpg"), так что это неправильно !!

Мне нужен только возврат "1000123107.jpg".

Пожалуйста, кто-нибудь, скажите мне, как я могу сделать?

спасибо.

Ответы [ 4 ]

2 голосов
/ 14 апреля 2011

Ваше текущее регулярное выражение требует только, чтобы оно заканчивалось на «7.jpg». Кажется, вы хотите отфильтровать только те файлы, которые имеют одну «7», и это в самом конце имени файла. Вы можете использовать регулярные выражения следующим образом:

^[^7]*7.jpg$

Вот как это ломается:

^        - Start of the line.
[^7]*    - Allow any number of characters that are not sevens.
7.jpg    - Ensure that there is a 7 at the end of the filename.
$        - End of the line.
2 голосов
/ 14 апреля 2011

Пока у вас есть список файлов, оканчивающихся на «7.jpg». Чтобы отфильтровать файлы, имеющие 7 других мест в имени файла, используйте регулярное выражение:

^[^7]*7\.jpg$

(обратите внимание, что мой первоначальный ответ не включал ^ и $ в начале и в конце, которые вы должны использовать, чтобы избежать ложных совпадений)

0 голосов
/ 14 апреля 2011

Я думаю, что вы ищете это

var fileList = (new DirectoryInfo(filePath)).GetFiles().Where(a => Regex.IsMatch(a.Name, "^[^7]*7.jpg$")).ToList();

Может быть, это может помочь.

0 голосов
/ 14 апреля 2011

Используйте text2re , бесплатный веб-генератор "regex by example". Отправьте туда свои строковые значения, и он вернет вам комбинацию регулярных выражений. Попробуйте сами, это лучший способ сделать это. Это поможет вам проверить различные варианты регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...