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

Windows Forms Discussion :

Lister toutes les possibilités de casse d'une chaîne


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Par défaut Lister toutes les possibilités de casse d'une chaîne
    Bonjour,
    j'ai une chaîne de 16 caractères et je voudrais lister toutes les possibilités de casse de cette chaîne (majuscule ou minuscule pour chaque lettre)
    par ex : MaCHaineDeCARaCtEres, maChAINEdEcaRActeReS, etc...

    j'ai réussi avec des for...next mais avec 16 lettres c'est assez laborieux donc je me dit qu'il y a sûrement plus simple (désolé je suis débutant...)

    Sur 16 caractères ça fait 2^16 = 65536 possibilités. J'ai essayé en m'aidant d'un tableau de bits (je me suis dit que ça se rapprochait plus ou moins de ça) mais je n'ai pas réussi à faire fonctionner l'exemple de la faq (ici)

    Merci

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Par défaut
    up!

  3. #3
    Membre éclairé Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Par défaut
    Bonjour,

    Moi non plus je n'ai pas réussi avec l'exemple.

    Cependant vu que tu y arrives avec For..Next, pourquoi veux-tu utilisé un tableau de bits ?

    C'est plus rapide ou cherches-tu quelques chose de plus simple que le For..Next qui lui est déjà facile à utiliser ?

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Par défaut
    Bonjour,

    Quel est ton but final?
    Tu vais comparer deux chaînes? Dans ce cas, utilises Upper

    Gwendal

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Par défaut
    En fait, je pensais trouver une fonction plus courte qu'un emboitement de 16 for... next.
    C'est pas grave merci pour vos réponses en tout cas

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Par défaut
    Après moultes heures de recherche, j'ai réussi à résoudre mon problème.
    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
    Imports System.IO
    Sub CaseLister()
            Dim InputString As String = "machaine"
            Dim Possibilite, Position As Integer
            Dim OutputString, PossBinaire As String
            Dim Caractere As Char()
            Dim MyWriter As New StreamWriter("CaseList.txt")
     
            InputString = InputString.ToLower() 'Convertit la chaîne en minuscules
            InputString = InputString.Trim(" ") 'Enlève les espaces de chaque côté
     
            Caractere = InputString.ToCharArray 'Place la chaîne dans un tableau de caractères
     
            For Possibilite = 0 To 2 ^ InputString.Length - 1 'Nombre de possibilités de casse différentes
     
                'Transforme le numéro de possibilité en binaire puis en string en complétant avec des 0
                PossBinaire = Convert.ToString(Convert.ToByte(Possibilite), 2).PadLeft(InputString.Length, "0")
     
                OutputString = ""
     
                'Vérifie si chaque lettre de la chaîne Possibilite est un 0 ou un 1 
                'et met la lettre correspondante de la chaîne Inputstring en majuscule
                For Position = 0 To InputString.Length - 1
                    If PossBinaire.Chars(Position) = "1" Then
                        OutputString += Caractere(Position).ToString.ToUpper()
                    Else
                        OutputString += Caractere(Position).ToString.ToLower()
                    End If
                Next Position
     
                MyWriter.WriteLine(OutputString) 'Ecrit le résultat dans le fichier txt
     
            Next Possibilite
     
            MyWriter.Close()
            Process.Start("Notepad.exe", "CaseList.txt") 'Ouvre le fichier txt
    End Sub
    J'imagine que ce n'est pas encore optimal mais ça marche et c'est bien plus court que ce que j'avais fait au départ.
    Dites-moi ce que vous en pensez

Discussions similaires

  1. Réponses: 14
    Dernier message: 16/08/2014, 19h05
  2. [MySQL] avec php lister toutes les bases de donnée d'une serveur sql
    Par sebou07 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/01/2012, 21h00
  3. Réponses: 2
    Dernier message: 14/08/2006, 19h23
  4. [debutant] lister tout les mots d'une page web!
    Par kriskikout dans le forum Web
    Réponses: 20
    Dernier message: 31/05/2006, 22h47
  5. [MySQL] lister toutes les tables d'une base
    Par Tr@nkill dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2006, 14h45

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