IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Tester format nom fichier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut Tester format nom fichier
    Bonjour a tous,

    le titre est explicite, je souhaiterai tester le format du nom d'un fichier.

    En effet, pour les besoin d'un programme, j'ai la necessité de ne traiter que les fichiers portant un nom au format suivant :
    NAXXXXXX.ZZZZZZZZZZ.YYYYMMDDHHMM.CSV

    je pensais a utiliser la méthode .ToString() sur le nom du fichier, mais je ne vois pas comment m'y prendre :s

    Si qqn a une idée, je suis preneur

    Merci par avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Par défaut
    Qu'appelle tu tester ?

    Si c'est vérifier qu'il est au bon format:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    var reg =new System.Text.RegularExpressions.Regex(
    @"^NA[0-9]{6}\.[0-9]{10}\.(?<year>[0-9]{4})(?<day>[0-9]{2})(?<month>[0-9]{2})\.CSV$");
     
     
    var nomFichier = "NA129247.1245462876.20090808.CSV";
    if(reg.IsMatch(nomFichier))
    {//correspond peut-être
         var regmatch=reg.Match(nomFichier);
         var year =Convert.ToInt32( regmatch.Groups["year"].Value);
         var month = Convert.ToInt32(regmatch.Groups["month"].Value);
         var day= Convert.ToInt32(regmatch.Groups["day"].Value);
         if(year<1900||year>3000||month<=0||month>12||day<=0||day>DateTime.DaysInMonth(year,month))
    {//date n'est pas une date
    }else
    {
    // =======  CORRESPONDANCE ========
    }
    }else
    {// ne correspond pas
    }
    EDIT : sorry... yavait une erreur flagrante : corrigée.
    Ceci dit j'ai pas testé, mais ça devrait le faire

  3. #3
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    nikel.

    Pour ce qui est d'autoriser les caractère alphanumérique dans les premiere condition, il faudrait que je modifie la ligne par ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var reg =new System.Text.RegularExpressions.Regex(
    @"NA[0-9][A-Z][a-z]{6}\.[0-9][A-Z][a-z]{10}\.(?<year>[0-9]{4})(?<day>[0-9]{2})(?<month>[0-9]{2})\.CSV");

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Par défaut
    presque : [a-zA-Z0-9]{6}
    et si tu ne veux pas de minuscules : [A-Z0-9]{6}

    Renseigne toi sur les expressions régulières pour plus de détails.

  5. #5
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    merci,

    cependant, j'ai changé le code par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // teste ensuite si le format du nom de fichier correspond
                        var reg = new Regex(@"^[a-zA-Z0-9]{8}\.[a-zA-Z0-9]{10}\.(?<year>[0-9]{4})(?<month>[0-9]{2})(?<day>[0-9]{2})(?<hour>[0-9]{2})(?<minute>[0-9]{2})\.CSV$");
                        if (reg.IsMatch(Path.GetFileName(fichier)))
                        {//correspond peut-être
                            var regmatch = reg.Match(Path.GetFileName(fichier));
                            var year = Convert.ToInt32(regmatch.Groups["year"].Value);
                            var month = Convert.ToInt32(regmatch.Groups["month"].Value);
                            var day = Convert.ToInt32(regmatch.Groups["day"].Value);
                            var hour = Convert.ToInt32(regmatch.Groups["hour"].Value);
                            var minute = Convert.ToInt32(regmatch.Groups["minute"].Value);
                            if (year < 1900 || year > 3000 || month < 0 || month >= 12 || day < 0 || day >= 31 || hour <0 || hour >24 || minute < 0 ||minute > 60 )
                            {
                                Console.WriteLine("Le fichier " + fichier + " a un probleme de syntaxe sur le nom du fichier, la date n'est pas une date");
                            }
                            Console.WriteLine("Le fichier " + fichier + " sera traité");
                        }
                        else
                        {
                            Console.WriteLine("Le fichier " + fichier + " ne sera pas traité");
                            File.Move(fichier, p_pathDossierATraiter + "Erreurs/" + Path.GetFileName(fichier));
                        }
    Et il ne me reconnait tjrs pas mon fichier qui se nomme "NABCDE12.0123456ABC.201109131153.csv"

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Par défaut
    remplace \.CSV par \.(CSV|csv)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Tester si nom de fichier ne commence pas par une chaîne
    Par v1cent dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 30/10/2013, 15h40
  2. XSL: Tester le nom d'un fichier
    Par xsmokingbenx dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 07/07/2009, 11h54
  3. Concatener la date au du nom fichier
    Par peppena dans le forum Linux
    Réponses: 5
    Dernier message: 09/02/2009, 12h53
  4. exp file= format nom de fichier
    Par cdu dans le forum Import/Export
    Réponses: 4
    Dernier message: 03/03/2006, 11h01
  5. [langage] tester si un fichier existe
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 02/03/2004, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo