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 :

test de chaine avec string.Contains


Sujet :

C#

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut test de chaine avec string.Contains
    Bonjour,

    j'ai une chaine de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string chaine="Magasin.codeM, Produit.codeP";
    Je veux tester si chaine contient Magasin avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     chaine.Contains("Magasin");
    mais je veux qu'il me retourne faux. Je ne cherche pas un mot composé mais juste Magasin.

    Pour cet exemple il retourne vrai parce que j'ai Magasin.codeM.

    Avez vous des idées sur comment faire s'il vous plait?

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par lytog Voir le message
    Bonjour,

    j'ai une chaine de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string chaine="Magasin.codeM, Produit.codeP";
    Je veux tester si chaine contient Magasin avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     chaine.Contains("Magasin");
    mais je veux qu'il me retourne faux. Je ne cherche pas un mot composé mais juste Magasin.

    Pour cet exemple il retourne vrai parce que j'ai Magasin.codeM.

    Avez vous des idées sur comment faire s'il vous plait?
    Si tous tes valeurs sont séparées par une , tu peux utiliser le split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         string [] sToto = chaine.Split(',');
     
         bool bDedans = sToto.Contains("Magasin");

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par jpbelmondo59 Voir le message
    Si tous tes valeurs sont séparées par une , tu peux utiliser le split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         string [] sToto = chaine.Split(",");
     
         bool bDedans = sToto.Contains('Magasin");

    Sa ne répond pas à ma question, ce que tu as fait sa retourne vrai aussi.
    Je veux que retourne faux pour moi Magasin est différent de CodeMagasin

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("Magasin");
    tu as donc
    sToto[0]="Magasin.codeM"
    sToto[1]="Produit.codeP"

    Donc bDedans retourne False

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("codeM");
    bDedans retourne False

    par contre ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("Magasin.codeM");
    bDedans retourne True

    Attention à la case, si tu veux ne pas en tenir compte tu peux ajouter un paramètre stringcomparaison dans le split

  5. #5
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Sinon il reste toujours la possibilité d'utiliser une expression rationnelle :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    class Program
    {
        private static readonly string[] Tests = new[] {
            "Magasin",
            "un Magasin",
            "Magasin ouvert",
            "un Magasin ouvert",
            "un.Magasin",
            "Magasin.ouvert",
            "un.Magasin.ouvert"
        };
     
        private static readonly Regex MagasinRegex =
            new Regex ("(^| +)Magasin( +|$)", RegexOptions.Compiled | RegexOptions.ExplicitCapture);
     
        static void Main ()
        {
            foreach (var test in Tests)
            {
                Console.Write ("{0} ", test);
                if (MagasinRegex.IsMatch (test))
                    Console.Write ("est ");
                else
                    Console.Write ("n'est pas ");
                Console.WriteLine ("valide");
            }
        }
    }
     
    /* affichera :
    Magasin est valide
    un Magasin est valide
    Magasin ouvert est valide
    un Magasin ouvert est valide
    un.Magasin n'est pas valide
    Magasin.ouvert n'est pas valide
    un.Magasin.ouvert n'est pas valide
    */
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par jpbelmondo59 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("Magasin");
    tu as donc
    sToto[0]="Magasin.codeM"
    sToto[1]="Produit.codeP"

    Donc bDedans retourne False

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("codeM");
    bDedans retourne False

    par contre ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("Magasin.codeM");
    bDedans retourne True

    Attention à la case, si tu veux ne pas en tenir compte tu peux ajouter un paramètre stringcomparaison dans le split

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string chaine = "Magasin.codeM, Produit.codeP";
                string [] sToto = chaine.Split(',');
     
                bool bDedans = sToto.Contains("Magasin.codeM");
    sToto est un tableau, la classe Array ne contient pas la méthode Contains, ne doit pas marcher

    J'ai donné juste une chaine comme exemple mais ma chaine de caractère contient des ( et ) des , et espaces

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    Enumerable.Contains<TSource>
    Tu auras bien une méthode Contains sur ton string[] (suffit de faire le test dans un bout de code, chez moi pas de souci )

    La méthode la plus "élégante" reste la Regex de Sehnsucht (à modifier pour prendre en compte différents séparateurs).
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Je code en C#, j'ai testé le bout de code mais j'ai eu un message d'erreur string[] ne contient pas la méthode Contains

  9. #9
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Citation Envoyé par lytog Voir le message
    Je code en C#, j'ai testé le bout de code mais j'ai eu un message d'erreur string[] ne contient pas la méthode Contains
    Il suffit de rajouter

    pour que les tableaux héritent de certaines méthodes liées aux collections génériques.

    Ajoute le et tu pourras faire Contains avec ton tableau.

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par PixelJuice Voir le message
    Il suffit de rajouter

    pour que les tableaux héritent de certaines méthodes liées aux collections génériques.

    Ajoute le et tu pourrais faire Contains avec ton tableau.

    Merci beaucoup (résolu) avec l'aide de jpbelmondo59(Split)

  11. #11
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    J'avais pas nettoyé mes using, sinon j'aurais été dans le même cas que toi ...
    C'est ça de faire des tests à l'arrach', my bad
    Plus je connais de langages, plus j'aime le C.

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    oui, navré, j'ai ouvert un form pour faire des essais qui contient le using linq

    Content que ma méthode te convient
    Au plaisir :-)

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

Discussions similaires

  1. Découpe de chaine avec String.split()
    Par boboss123 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/10/2012, 15h52
  2. evaluer une chaine de String en commende avec vb.net
    Par souma86 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/03/2009, 08h29
  3. [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
  4. [Java/String] Completer une chaine avec un caractere
    Par shaun_the_sheep dans le forum Langage
    Réponses: 4
    Dernier message: 31/05/2005, 09h01
  5. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38

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