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 si un string est contenu dans un autre


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Par défaut Tester si un string est contenu dans un autre
    Bonjour,

    Mon but controler si un string contient un mot d'une liste XML et j'avoue ne pas trop savoir comment procéder.

    Exemple:

    AIDA BIZ Consulting SA

    mon XML:
    Code XML : 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
    <Root>
    <Item>AEA</Item>
    <Item>AEE<Item>
    <Item>AELE<Item>
    <Item>AELS<Item>
    <Item>AID<Item>
    <Item>AIEA<Item>
    <Item>AIPO<Item>
    <Item>ALADI<Item>
    <Item>ALALC<Item>
    <Item>ALALE<Item>
    <Item>AMAGE<Item>
    <Item>AMPO<Item>
    <Item>APEC<Item>
    <Item>APPA<Item>
    <Item>ARABSAT<Item>
    <Item>BBDM<Item>
    <Item>BIZ<Item>
    </Root>

    Donc la j'aimerais qu'on me signale BIZ et pas AID car c'est AIDA.

    Je pensais faire ca avec un ArrayList et tester avec un contains mais es-ce que c'est le meilleur moyen?

    Merci

    Thierry

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Et si tu cherchais la chaîne ">AIDA<" ? Je sais que c'est moche, mais ça dépend de ton besoin et de ton projet. Si tu as un certain nombre de manips à faire sur du xml, autant le désérialiser dans une classe qui va bien, qui contiendrait en l'occurence une List<string> remplie avec les Item. Si c'est un besoin ponctuel, ma solution, doit suffire. Et les expressions régulières peuvent bien aider également.

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Avec un XmlDocument, tu charges ton XML et tu le lis noeud par noeud pour faire un test de comparaison.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Par défaut
    Bonjour,

    Merci pour vos réponse

    Et si tu cherchais la chaîne ">AIDA<" ? Je sais que c'est moche, mais ça dépend de ton besoin et de ton projet.
    Je comprends pas ce que tu veux dire a part si tu parle des caractère spéciaux <> ben on peut très bien utiliser & lt ; et & gt ;.

    Sinon tous dépend des Item contenu dans le XML aujourd'hui AIDA n'y est pas mais demain on pourrait décider de le rajouter.

    Citation Envoyé par Thomas Lebrun Voir le message
    Avec un XmlDocument, tu charges ton XML et tu le lis noeud par noeud pour faire un test de comparaison.
    Oui donc je dois de faire une requête xpath pour chaque mot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (test.selectsinglenode("/Root[Item='AIDA'])!=null)
    if (test.selectsinglenode("/Root[Item='BIZ'])!=null)
    if (test.selectsinglenode("/Root[Item='Consulting'])!=null)
    ....
    Le but est de savoir quelle mot est dans la liste et le mentionné à l'utilisateur. En faite, c'est une blacklist si un mot se retrouve dans le texte je dois le signaler a mon utilisateur car il est interdit.

    Donc si je suis bien, je contruis une List<string> et je boucle dessus (for) en faisant a chaque fois un selectsinglenode?

    Mais ca va le faire si je dois controler 50 string avec avec ma blacklist qui contient environ 100 Item?

    Merci

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par totoen Voir le message
    En faite, c'est une blacklist si un mot se retrouve dans le texte je dois le signaler a mon utilisateur car il est interdit.
    Dans ce cas là, tu charges ton XML dans un XmlDocument, tu loades toutes les valeurs dans une liste de string (List<string>) et après, tu te fais une petite méthode de vérification que tu appelles à chaque fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private bool CheckWord(string s)
    {
        bool result = false;
     
        // BlackList est la liste générique qui contient tes mots interdits
        if(BlackList.Contains(s))
        {
             result = true;
        }
     
        return result;
    }

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Dans ce cas là, tu charges ton XML dans un XmlDocument, tu loades toutes les valeurs dans une liste de string (List<string>) et après, tu te fais une petite méthode de vérification que tu appelles à chaque fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private bool CheckWord(string s)
    {
        bool result = false;
     
        // BlackList est la liste générique qui contient tes mots interdits
        if(BlackList.Contains(s))
        {
             result = true;
        }
     
        return result;
    }
    +1
    j'ai pas plus simple
    et j'ai pas plus rapide

    Edit : Je viens de me rendre compte que l'on pouvait mal interpréter ce que j'ai dit, alors j'ai modifie

  7. #7
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Plus simple il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private bool CheckWord(string s)
    {
      return BlackList.Contains(s);
    }
    Plus clair à mon goût

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

Discussions similaires

  1. Tester si un chaîne est contenue dans une autre
    Par JonathanF dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/10/2011, 20h59
  2. Réponses: 2
    Dernier message: 28/03/2009, 19h13
  3. Réponses: 4
    Dernier message: 21/03/2008, 15h07
  4. [RegEx] Rechercher si mot est contenu dans un autre
    Par Seb33300 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/08/2007, 23h52
  5. [C#]Fonction vérifiant qu'1 string est contenue ds 1 autre
    Par closo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2005, 13h41

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