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

VB.NET Discussion :

Détecter les mêmes éléments dans un textbox.


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Détecter les mêmes éléments dans un textbox.
    Bonjour,
    Je créer un petit programme sur visual studio.(Je suis débutant )
    Le but du programme c'est en appuyant sur le bouton, il doit détecter les mots dans la textbox et l'afficher sur la Listbox. Mais il ne doit pas afficher 2x le même mots.(example: Si j'ecris 3x "test" dans le textbox le programme doit savoir qu'il y a plusieurs 3x "test" dans le textbox et l'affiche qu'une seul fois dans la Listbox.). J'aimerai bien votre aide sur ce dernier.

    Merci de votre réponse.

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par HollowSpirit Voir le message
    [...]il doit détecter les mots dans la textbox et l'afficher sur la Listbox. Mais il ne doit pas afficher 2x le même mots.[...]
    Je ne sais pas où tu es en difficulté donc je vais commencer par le début : renseigne toi sur String.Split.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par ZenZiTone Voir le message
    Je ne sais pas où tu es en difficulté donc je vais commencer par le début : renseigne toi sur String.Split.
    Le problème c'est que je n'arrive pas faire en sorte que il doit détecter qu'il y a 2 fois le même mots dans le textbox et le faire écrire qu'une seul fois dans le listbox.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Il faut faire en deux étapes.

    1/ Split
    2/ Dédoublonnage

    Si l'ordre des "mots" n'a pas d'importance dans la listbox, le dédoublonnage peut commencer par un tri : ainsi il est très aisé de sauter les occurrence du même mot lors de l'affichage, ça simplifie pas mal les choses.
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Voici quelques méthodes "à la va vite".
    Code csharp : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
     
    namespace TestUnique
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Veuillez entrer une liste de mots séparés par des espaces :");
                string phrase = Console.ReadLine();
     
                string[] mots = phrase.Split(' ');
     
                Console.WriteLine("Liste des mots (avec doublons) :");
                foreach (string mot in mots)
                {
                    Console.WriteLine("- {0}", mot);
                }
     
                Console.WriteLine("Liste des mots uniques (méthode du tri) :");
                string[] copie = (string[])mots.Clone();
                Array.Sort(copie);
                string precedent = string.Empty;
                foreach (string mot in copie)
                {
                    if (mot != precedent)
                    {
                        precedent = mot;
                        Console.WriteLine("- {0}", mot);
                    }
                }
     
                Console.WriteLine("Liste des mots uniques (méthode \"naturelle\") :");
                for (int i = 0; i < mots.Length; ++i)
                {
                    bool doublon = false;
                    for (int j = 0; j < i; ++j)
                    {
                        if (mots[j] == mots[i])
                        {
                            doublon = true;
                        }
                    }
     
                    if (!doublon)
                    {
                        Console.WriteLine("- {0}", mots[i]);
                    }
                }
     
                Console.WriteLine("Liste des mots uniques en passant par un dictionnaire :");
                Dictionary<string, string> dico = new Dictionary<string, string>();
                foreach (string mot in mots)
                {
                    try
                    {
                        dico.Add(mot, mot);
                    }
                    catch {}
                }
                foreach (KeyValuePair<string, string> mot in dico)
                {
                    Console.WriteLine("- {0}", mot.Key);
                }
     
                Console.WriteLine("Liste des mots uniques par recopie :");
                List<string> copie2 = new List<string>();
                foreach (string mot in mots)
                {
                    if (!copie2.Contains(mot))
                    {
                        copie2.Add(mot);
                    }
                }
                foreach (string mot in copie2)
                {
                    Console.WriteLine("- {0}", mot);
                }
     
                Console.WriteLine("Liste des mots uniques en utilisant Linq :");
                copie = mots.Distinct().ToArray();
                foreach (string mot in copie)
                {
                    Console.WriteLine("- {0}", mot);
                }
     
                Console.WriteLine("Il y a plein d'autres solutions possibles");
                Console.ReadKey(true);
            }
        }
    }
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    mouais, enfin de nos jours on écrit pas une tartine de code pour un truc aussi simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listbox1.items.AddRange(me.Textbox1.Text.Split(" "c).distinct.toarray)
    [edit]
    je viens de voir que tu proposais linq en fin de code
    enfin j'ai aussi pu voir que tu proposais un try catch avec un add sur un dictionary au lieu d'un containskey ... un peu aberrant ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    C'est pas parce que des solutions sont meilleures ou pires que d'autres qu'elles sont exclusives.

    Si on est dans le cadre d'un TP pour illustrer un cours sur l'utilisation des boucles, alors la solution Linq n'a aucun sens.
    Si on illustre la gestion des erreurs avec présentation du Early or Late Error Handling alors la solution à base de try/catch sans containskey est tout à fait justifiée.
    Enfin, Linq a beau avoir plein d'avantages, il n'en reste pas moins contre-performant dans bien des cas (car il ne permet pas de laisser place à des optimisations de contexte : dans un array trié, le distinct sera de facto énormément plus lent qu'une simple itération avec saut des valeurs identiques consécutives par exemple).

    Faut arrêter l'intégrisme un peu...
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Avoir les mêmes éléments dans 2 conteneurs
    Par antoine2210 dans le forum C#
    Réponses: 2
    Dernier message: 29/12/2013, 15h53
  2. Réponses: 3
    Dernier message: 07/08/2009, 11h59
  3. Supprimer les balises HTML dans un TextBox
    Par calagan99 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 04/07/2007, 16h38
  4. Réponses: 26
    Dernier message: 20/06/2006, 14h56

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