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 :

[VB.NET 2.0]Comment comparer CaseInsensitive clés Hashtable?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 49
    Points
    49
    Par défaut [VB.NET 2.0]Comment comparer CaseInsensitive clés Hashtable?
    Bonjour,

    Je vous explique mon probleme :

    J'ai une hashtable qui contient comme clé de chaque élément une String.

    Le probleme est que les clés sont sensibles à la casse autrement dit la clé "MaClé" est differente de la clé "maClé", ce que je ne souhaiterais pas....

    Je voudrais donc que lorsque j'apelle par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     maHash.Contains("maCle")
    cela me retourne true si un élément est présent avec comme clé "MaClé"...

    Je ne peut pas pour des raisons liées à mon programme mettre toutes mes clés en minuscules ou majuscule...

    Voila donc je ne sais pas comment faire...
    J'ai trouvé quelques piste sur la MSDN avec
    - la propriete "Hashtable.EqualityComparer"
    - ou ca..

    Mais j'avoue que je suis un peu paumé (je suis débutant)...

    Voila, merci d'avance pour toute aide !!

  2. #2
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Tu peux créer directement une hashtable insensible à la casse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Hashtable h;
    CaseInsensitiveHashCodeProvider hash = new  CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture);
     
    CaseInsensitiveComparer comparer = new CaseInsensitiveComparer(CultureInfo.InvariantCulture);
     
    h = new Hashtable(hash, comparer);
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 65
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta réponse !

    Effectivement ca marche trés bien, cependant dans le framework 2, CaseInsensitiveHashCodeProvider est obsolete et il vaut mieux apparement utiliser "StringComparer" ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Dim insensibleC As StringComparer = StringComparer.CurrentCultureIgnoreCase
     
    h = New Hashtable(insensibleC)
    Voila. Probleme résolut

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

Discussions similaires

  1. [VB.NET] Comment comparer 2 tableaux de string
    Par vijeo dans le forum VB.NET
    Réponses: 4
    Dernier message: 04/12/2007, 20h59
  2. Comment comparer deux date en SQL Server avec VB.NET
    Par Pedro Varela dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/09/2006, 15h26
  3. Réponses: 9
    Dernier message: 27/06/2006, 16h55
  4. [VB.Net] Comment comparer des types?
    Par smedini dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/01/2006, 12h00
  5. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08

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