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 :

Mot commençant par (OpenXml)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut Mot commençant par (OpenXml)
    Bonjour à tous,

    Je travaille sur l'OpenXML et la lecture des infos d'un document word.

    Et j'aurais besoin d'une piste sur une syntaxe que j'ignore complètement.
    En fait je voudrais rechercher dans le document uniquement les mots commençant par "F_"

    Ca c'est le code pour trouver un mot complet dans le document, mais je n'ai aucune idée pour ce que je veux faire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //chargement de la partie dans un XmlDocument 
                    XmlDocument doc = new XmlDocument(); 
                    doc.Load(mainPart.GetStream()); //sensible à la casse 
     
     
                        if (doc.DocumentElement.InnerText.Contains(textBoxRechercher.Text)) 
                        { 
                            MessageBox.Show("Texte trouvé dans le document"); 
                        }
    Merci d'avance !

  2. #2
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Bonjour,

    Une solution serait de faire un InnerText.Split(" ,.?!;") pour récupérer un string[] contenant les mots, ensuite parcourir ce tableau (foreach ou linq) et vérifier s'il contient des mots commençant par F_.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Ca marche merci je vais essayer comme ça !

    Par contre vu l'idée que tu m'as donnée, je me pose tout de suite une question. Si ils sont dans des tableaux, cela fonctionnera quand même ?
    C'est le split "espace" qui servira pour ce cas ?

    Et aussi, c'est possible de déclarer un tableau de string sans connaitre sa taille ?
    Parce que je ne peux pas savoir combien il y aura de mots dans chaque cas...

  4. #4
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Pas besoin de connaître sa taille, Split() renvoit directement le tableau avec tous les mots, en fonction des séparateurs précisés dans la chaîne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] mots = texte.Split(" .,;?!");
    Tu peux aussi récupérer une liste de chaînes et faire du LINQ dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List<string> = mots.ToList<string>();
     
    var req = from mot in mots where mot.StartWith("F_") select mot;
    ...
    PS : Je n'ai pas Visual Studio sous la main pour l'instant, j'ai pas testé le code, mais ça doit ressembler à ça...

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Je ne connais pas vraiment le Linq, j'ai opté pour le foreach.. C'est moins propre je pense mais voilà.

    Je met mon code, si jamais ça sert à quelqu'un pour la syntaxe (Il fonctionne j'ai testé)

    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
     
    if (mainPart != null)
                    {
                        //chargement de la partie dans un XmlDocument 
                        XmlDocument doc = new XmlDocument();
                        doc.Load(mainPart.GetStream());
     
                        list_mots = doc.DocumentElement.InnerText.Split(new char[] { ' ', '.', ':', '?', '!', ';' });
     
     
                        foreach (string mot in list_mots)
                        {
                            if (mot.Length > 2)
                            {
     
                                string mot_small = mot.Substring(0, 2);
     
                                if (mot_small == "F_")
                                {
                                    TxtBox.AppendText(mot + "\n");
                                }
                            }
     
                        }
     
                    }
    Merci à toi SLE, d'avoir pris le temps.

  6. #6
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Pour faire plus simple, tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    foreach (string mot in list_mots)
    {
       if (mot.StartWith("F_")) TxtBox.AppendText(mot + "\n");
    }

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

Discussions similaires

  1. [AC-2010] Requête avec If et mot commençant par
    Par Car0le dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/02/2014, 13h22
  2. [WD-2010] Insertion Tabulation après les mots commençant par GEN
    Par nadir-1961 dans le forum Word
    Réponses: 2
    Dernier message: 21/05/2012, 18h47
  3. Recherche de mot commençant par une chaine dans un dictionnaire
    Par ram-0000 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 20/04/2012, 18h09
  4. [RegEx] Trouver un mot commençant par une lettre donnée
    Par Arget dans le forum Langage
    Réponses: 7
    Dernier message: 18/09/2011, 17h41
  5. Réponses: 2
    Dernier message: 15/09/2007, 10h10

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