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 :

Format de chaine String [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Points : 92
    Points
    92
    Par défaut Format de chaine String
    Hola petite question simple,

    j'aime vérifier qu'une chaîne de caractère respecte un certain format du style " S-XXX-C-XXX_xxxxxx_XXXX";

    Les X étant des chiffres ou des lettres.

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 200
    Points : 12 776
    Points
    12 776
    Par défaut
    Bonjour,
    Quand je cherche à vérifier si une chaine respecte un certains format, je pense tout de suite à une regex.
    Par contre je n'ai jamais su les générer tout seul (il faut vraiment que je m'y mette), mais il existe des sites tout fait pour ça, par exemple celui-ci (le premier que j'ai trouvé, il y en a d'autres).

    Tatayo.

  3. #3
    Membre régulier
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    Salut,
    en effet j'ai déjà fait le regex qui vérifie par exemple s'il y le S- puis un autre qui vérifie s'il y'a le -C- mais j'aimerai quelque chose de plus optimisé et qui remplisse mes conditions...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Le Regex et les expressions régulières vont t'y aider :
    https://docs.microsoft.com/fr-fr/dot...tframework-4.8

  5. #5
    Membre régulier
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    Je pensais me servir de ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    S-[\d]{3}-C-[\d]{3}_[a-zA-Z]_[\d]{3}
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    S-[\d]{3}-C-[\d]{3}_[\w]_[\d]{3}
    j'ai aucune idée de comment gérer ça ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    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
       class Program
        {
            static void Main(string[] args)
            {
                //string test = "S-XXX-C-XXX_xxxxxx_XXXX";
                string test = "S-12f-C-2E3_xxxxxx_a00X";
     
                string pattern = @"\AS-\w{3}-C-\w{3}_x{6}_\w{4}\z";
     
                Regex rgx = new Regex(pattern);
                Match m = rgx.Match(test);
     
                Console.WriteLine(m.Value);
            }
        }
    Précise ce que tu veux faire exactement comme contrôle.

  7. #7
    Membre régulier
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    Pardon , déjà merci pour la réponse.

    Je souhaitais vérifié que le format du nom de fichier ai le même pattern que celui du pattern sinon je supprime le fichier

    Ça marche du coup donc merci voilà la solution cependant :
    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
    22
     
    private static void Main(string[] args)
            {
     
                var test = "S-458-C-236_4xd_598";
     
                var pattern = @"S-[\d]{3}-C-[\d]{3}_[\w]{3}_[\d]{3}";
     
     
                var rgx = new Regex(pattern);
                var m = rgx.Match(test);
     
                if (m.Success)
                {
                    Console.WriteLine("SUCCESS PATTERN FOR  " + m.Value);
                }
                else
                {
                    Console.WriteLine("ERROR PATTERN");
                }
     
            }
    La je précise le nombre d'argument que j'attend, serait-t'il possible de juste préciser que j'attend quelque chose sans forcément un nombre défini ou alors est il possible de limiter ?

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    La je précise le nombre d'argument que j'attend, serait-t'il possible de juste préciser que j'attend quelque chose sans forcément un nombre défini ou alors est il possible de limiter ?
    Tu peux préciser ta pensée ?

  9. #9
    Membre régulier
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    Oui de suite

    Voilà un exemple de nom de fichier:
    S-459-C-785_TestAluminium_568
    S-459-C-785_TestCarbone_568

    Le texte entre les deux "_" n'ont pas tout les deux le même nombre de caractères. Or les deux ont le bon format.
    Je veux que ces espaces de texte entre les underscores soient libres et donc flexible.s

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "S-[\d]{3}-C-[\d]{3}_[\w]{3}_[\d]{3}"
    Le "_[\w]{3}_" oblige seulement trois caractères. J'aimerai avoir une indication de comment devenir flexible sur l'élément "_[\w]_".
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "S-[\d]{3}-C-[\d]{3}_[\w]{n}_[\d]{3}"
    // ou 
    "S-[\d]{3}-C-[\d]{3}_[\w]_[\d]{3}"
    // Sauf que ces deux solutions ne marchent pas

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string pattern = @"\AS-\d{3}-C-\d{3}_\w+_\d{3}\z";

  11. #11
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Attention car \w+ correspond a [a-zA-Z0-9_]+ (lettre, nombre, underscore). S'il ne faut accepter que des lettres et uniquement des lettres, alors il vaut mieux etre explicite avec [a-zA-Z]+.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  12. #12
    Membre régulier
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    Ok merci à tous c'est bon.

    Je close le poste

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

Discussions similaires

  1. [String] formater une chaine avec un tableau d'argument
    Par jakouz dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 14/04/2006, 15h19
  2. Déterminer le bon format d’une chaine de cartactère
    Par SchpatziBreizh dans le forum Langage
    Réponses: 8
    Dernier message: 05/08/2005, 08h17
  3. [Compilation] Chaine string Tres tres longues
    Par Clorish dans le forum Langage
    Réponses: 9
    Dernier message: 20/07/2005, 11h20
  4. [C#] Rassembler les chaines ( string )
    Par smyley dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/01/2005, 18h27
  5. [langage] cherche script pour formater une chaine
    Par MASSAKA dans le forum Langage
    Réponses: 7
    Dernier message: 12/11/2003, 12h18

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