J'ai besoin d'obtenir une liste de fichiers sur un lecteur avec des chemins correspondant à un motif spécifique, par exemple fa \ d \ d \ d.xml où \ D est chiffre (0,1,2..9). Les fichiers peuvent donc avoir des noms comme fa5423.xml. P>
Quel est le nom le plus efficace pour faire cela? P>
3 Réponses :
Utilisez l'API de répertoire pour trouver fa ????. XML code> et exécutez la liste résultante via un filtre de regex: var fa = from f in Directory.GetFiles("FA????.xml")
where Regex.Match(f, "FA\d\d\d\d\.xml")
select f;
Ne pas regex.Match retourne un objet de match plutôt qu'un booléen?
Vous pouvez faire quelque chose comme: puis à partir de vos résultats, il suffit de les isère et de les vérifier contre votre regex, c'est-à-dire que les caractères code> dans le nom sont Tous les numéros p> p>
Utilisez-vous C # 3?
Regex reg = new Regex(@"^FA[0-9]{4}\.xml$");
var files = Directory.GetFiles(yourPath, "*.xml").Where(path => reg.IsMatch(path));
.Sélectionnez (chemin => chemin) code> est redondant.
Oki ... Et maintenant que je regarde à nouveau, je devrais ancrer la regex et il ne sert à rien d'obtenir *. * code> non plus.
@Phil mieux utiliser énuméraireFiles comme ce Stackoverflow.com/questions/3554559/... en raison de la performance que vous pourriez voir la différence dans ce Stackoverflow.com/questions/5669617/...
Est-ce que cela répond à votre question? C # - Noms de fichier correspondant à la réégalité selon à un modèle de dénomination spécifique