Je reçois une liste de noms de fichiers en utilisant le code suivant:La meilleure façon d'obtenir que certains groupes de une chaîne
//Set up Datatable
dtUpgradeFileInfo.Columns.Add("BaseFW");
dtUpgradeFileInfo.Columns.Add("ActiveFW");
dtUpgradeFileInfo.Columns.Add("UpgradeFW");
dtUpgradeFileInfo.Columns.Add("FileName");
//Gets Upgrade information and upgrade Files from Upgrade Folder
DirectoryInfo di = new DirectoryInfo(g_strAppPath + "\\Update Files");
FileInfo[] rgFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in rgFiles)
{
test1 = fi.Name.ToString();
}
Tous les noms de fichiers seront sous forme BXXXX_AXXXX_UXXXX. Où bien sûr les X représentent un nombre de 0-9, et j'ai besoin de ces 3 groupes de nombres justes pour les mettre dans leur colonne respective dans le Datatable. Au début, j'avais l'intention d'obtenir les caractères qui représentent chaque groupe et de les regrouper pour chaque groupe, mais je me demande s'il y a une meilleure façon de le faire que de l'envoyer à charArray. Aucune suggestion?
RegEx est definitly une bonne façon de le faire, et laisse une ouverture pour dépensant la solution à de nombreux problèmes plus complexes sans trop d'effort. La seule honte est que MS a rendu l'utilisation de Regex un peu plus compliquée que d'autres solutions. – Neowizard
Il est également inefficace si l'entrée est de forme fixe. Performance sage, String.Split devrait être utilisé de préférence à reg-ex. –
@Michael Goldshteyn, cela dépend de ce que vous optimisez. Une routine d'analyse codée à la main bien conçue sera généralement capable de surpasser une regex du point de vue du cycle du CPU. Cependant, sauf si vous allez traiter des milliers d'éléments, la différence de performance est probablement sans importance. L'approche RegEx a l'avantage supplémentaire de valider la conformité des noms de fichiers avec le modèle attendu (quelqu'un qui lâche un readme_before_running.txt dans le répertoire provoquera une erreur avec d'autres approches). De plus, il peut être plus facile de s'adapter pour prendre en charge des formats valides supplémentaires. –