Я хочу написать функцию, которая фильтрует файлы в каталоге. Полученный путь метода, список токенов, которые должен содержать файл, и список токенов, которые не должны находиться в файле.Check String содержит все элементы в списке, используя Linq и нечувствительность к регистру
мой код выглядит так:
private String[] enumerateFilesByFilter(String path, List<String> contain, List<String> notContain)
{
String[] files = Directory.GetFiles(path).Where(f => (contain.All(f.Contains)) && (!notContain.Any(f.Contains))).ToArray();
//String[] files = Directory.GetFiles(path).Where(f => f.IndexOf(contain.All(f.Contains), 0, StringComparison.CurrentCultureIgnoreCase) != -1).ToArray();
return files;
}
Я пытаюсь получить список файлов, которые соответствуют критериям, и мне удалось получить правильный список, но только для чувствительных маркеров.
(В воздаем вы можете увидеть мои попытки получить для случая нечувствительный, но есть ошибка ...)
Как я могу проверить, если имя файла содержит всю строку в списке в случае нечувствительным?
EDIT, пример:
Допустим, у меня есть последующие файлы в моем каталоге:
proj_debug_3.2.0.txt
proj_release_3.2.1.txt
proj_release_3.2.1_useThis_TRY.txt
Про j_release_3.2.1_UseThis.txt
так, чтобы позвонить в
enumerateFilesByFilter(path, new List<String> { "Release", "useThis" }, new List<String> {"try", "debug" });
должен возвращать proj_release_3.2.1_UseThis.txt
файлу
Спасибо!
Fyi, используйте 'Directory.EnumerateFiles' вместо' Directory.GetFiles', если вы используете 'Where', так как он может начать обработку до того, как будут возвращены все файлы, а не GetFiles, который сначала создает массив всех файлов. –
Может ли файл быть как содержащимся, так и не содержать одновременно? –
@ ЮвалИцчаков, №. содержать список отличается от notContain ... – AsfK