Nombre de lettres dans deux variables égaux

Résolu
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 - 1 mars 2011 à 12:13
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 - 1 mars 2011 à 21:02
Bonjour,

Voila je possède un mot qui est enregistré dans une variable dite Key
Et un texte qui est enregistré dans une variable dite Clair.

Je les déclare ainsi :

Dim Key as string = "toto"
Dim Clair as string = "Il fait un beau temps"


Ensuite, J'enlève tous les espaces du texte

Je les enlève ainsi :

Clair = replace(clair, " " , "")



Voila mon problème :

Je cherche à ce que qu'en je clique sur un bouton, le nombre de lettre dans la variable key et texte soit égaux toute en gardant les mêmes caractère de la variable key:

Exemple :

Key : toto
Texte (après enlèvement des espace) : Totovaàlaplage

Résultat voulu :

Key : tototototototo
Texte (après enlèvement des espace) : Totovaàlaplage



Autre exemple :

Key : Chiffre
Texte (après enlèvement des espace) : Jevaisàlacaserne

Résultat voulu :

Key : ChiffreChiffreCh
Texte (après enlèvement des espace) : Jevaisàlacaserne


Merci.

48 réponses

Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 17:00
Déjà, on va faire plus simple pour ton Substring, si tu veux faire genre prendre tout à partir d'un point jusqu'au bout de la chaine, exemple:

azertyuiop
^-------|

prendre ça, tu peux laisser tomber le second paramètre et juste écrire machin.Substring(positionDepart) (mais tu le saurais si tu avais lu la documentation)

Après, j'ai beau retourné ton truc dans tous les sens, je perçois une légère logique sur ce que tu veux faire dans le sens où ça serait
- recopier key
- enlever de clair les "key-ème" premiers caractères (entendre par key-ème le nombre de caractère correspondant à la longueur de key)
- recommencer jusqu'à ce que clair soit vide

Alors si c'est bien ça je pige pas du tout le "bordel" que tu fais avec tes variables états et tout

en pseudo code ça donne simplement

Tant que clair.longueur > 0 faire
resultat = resultat & clef
clair = clair - "key-eme" premiers
Fin tant que

ni plus ni moins 4 lignes (et avec le pseudo-code que j'ai mis c'est limite s'il suffit pas de traduire en anglais pour avoir le vb.net

sauf que si tu fais gaffe à part l'histoire de la soustraction des caractères et du test "> 0" ça revient au même que le While de NHenry (sauf que lui ne soustrait pas et teste sur longueur résultat < longueur clair)

et donc tu te retrouveras comme dans son code avec des caractères en trop à supprimer, sauf qu'en plus toi ton code plantera, preuve par l'exemple:

clef = "aie"
valeur = "hello"
resultat = ""

est-ce que clair.longueur > 0 ? oui je rentre dans le tant que
resultat resultat & clef -> donc resultat "aie" ici
clair raccourci de 3 caractères -> donc clair = "lo" ici
fin tant que on boucle,

est-ce que clair.longueur > 0 ? oui je rentre dans le tant que
resultat resultat & clef -> donc resultat "aieaie" ici
clair raccourci de 3 caractères -> ah ben ça plante la chaine ne fait que 2 de longueur donc en démarrant de 3 (la longueur de clef) on est en dehors
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
1 mars 2011 à 17:22
Bonjour,

Oui, le seul problème est qu'avec ce code :

Do while len(Key)<len(clair)
key=key & key
loop
key=left$(key,len(clair))

dans la ligne :
key=left$(key,len(clair))

une erreur apparait :
Le caractère de type '$' ne correspond pas au type de données déclaré 'Integer'


Je sais, j'ai rédigé le message à la va-vite sans prendre en compte que c'était du .NET.

Le code .NET serait :
Do While key.Length<clair.Length
    key+=key
loop
key=key.SubString(0,clair.length)


Désolé

Mon site
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 mars 2011 à 18:40
Salut
une autre méthode

Dim rs As String
        Dim texte As String = "Jevaisàlacaserne"
        Dim key As String = "Chiffre"

        rs = Nothing
        For iter = 0 To texte.Length \ key.Length - 1
            rs = rs & String.Concat(key)
        Next
        rs = rs & (key.Substring(0, texte.Length Mod key.Length))
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 12:33
Bonjour,

Et la question est ?

Parce que s'il s'agit de faire le boulot à ta place c'est pas trop la politique de la maison... :)

Cordialement !

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 12:44
Bonjour,

Déjà je n'es jamais formulé de faire le boulot à ma place.

Et je me demande si tu as tous lut ...

Je cherche à ce que qu'en je clique sur un bouton, le nombre de lettre dans la variable key et texte soit égaux toute en gardant les mêmes caractère de la variable key: 
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
1 mars 2011 à 12:55
Bonjour,

Code extra simple :
Do while len(Key)<len(clair)
    key=key & key
loop
key=left$(key,len(clair))


Mon site
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 12:56
Oui oui j'ai bien lu, et c'est justement le but de ma question...

Tu définis ton objectif c'est bien, maintenant où est le souci ? tu ne présentes pas de code pouvant montrer ce qui coince, ni de début de piste sur l'algorithme que tu penses/cherches à utiliser...

parce que (et je ne serais pas le seul dans ce cas) sans autre information on se dit que ce que tu attends c'est le code tout fait.

Cordialement !
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 12:58
... ou alors quelqu'un passe te balance un code (qui ressemble plus à du VB6 que du VB.Net) et niveau intérêt... (désolé NHenry c'est sûr toi que ça tombe... )
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:00
Merci Nhenry, pourrais-je avoir d'informations sur :

key=left$(key,len(clair))


S'il te plait

Sehnsucht désolé si je me suis mal exprimé.
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 mars 2011 à 13:07
donc
avant
key = "Essaietoutseul"
Texte ="jevaisessayerdemedebrouillersiçamarchepas
jevaisdemanderdel'aide"

ce qui donne
EssaietoutseulEssaietoutseulEssaietoutseul

Sérieux
pour retirer les espaces utilise
la méthode trim
str = "blabla blabla blabla"
str = str.trim()
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 13:10
@Shayw

Trim ne supprime que les espaces en début et fin de chaine pas au milieu, par contre utiliser la méthode Replace de la classe String plutôt que celle servant à la compatibilié VB6 serait légèrement mieux
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:13
Ba c'est bien là le problème ...
J'essaye depuis 9h00, et là ? il est 13h10..
Sa fait ..humm.. 4 heure ?

4 heure que j'essaye sans résultat
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:14
Si j'ai trouvé avec un select case mais ... c'est long et chiant ...

Il n'existe pas d'autre méthode ?
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:15
For i As Integer = 0 To NbrCharacterClair

            Select Case CharacterKey

                Case "1"
                    NewKey = NewKey + CharacterKey(0)

            End Select

        Next


Mais sa ne marche pas ..
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 13:22
Bah l'algorithme est pourtant simple (sur le papier), pour chacune des lettres de ta variable "clair" tu concatènes la lettre suivante de ta variable "key" à ta variable résultat et quand tu dépasses la longueur de key tu reviens au début

Après faudrait voir quel doit être le comportement à adopter dans des cas "spéciaux" si tu passe Nothing pour la clef ou la valeur, si la clef ou la valeur est une chaîne vide, si la valeur est plus courte que la clef mais déjà faisons fonctionner dans le cas "standard"...
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:27
J'ai bien compris l'algorithme, mais je ne sais pas comment le passer sous le vbnet
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
1 mars 2011 à 13:32
La seule méthode dont tu aies besoin (et peut-être est-ce parce que tu ne la connait pas que ça coince) est la méthode Substring, qui permet d'extraire une sous-chaine d'une chaine, exemples:

Const source As String = "hello"

Dim firstTwo As String = source.Substring(0, 2) ' retournera "he"


Après à part balancer le code je vois pas quoi faire d'autre, parce que la méthode en elle-même fait 3 lignes (si on compte pas les fioritures, déclarations etc.)
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:35
Merci, je te répondrais quand j'aurais fais mon code
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:44
Je crois que l'on ne sais pas bien compris

Soit clé un mot (toto)
Soit clair un text (ilfaitbeau)

Le résultat cherché est :

Clé : tototototo



Quand tu m'a donné le code :

Const source As String = "hello"

Dim firstTwo As String = source.Substring(0, 2) ' retournera "he"



Si je le modifie ainsi :

Const texte As String = "ilfaitbeau"

Dim firstTwo As String = source.Substring(0, NbrCaracterKey)


Si ma clé comprend 2 lettres,
Sa me donnera "il"

D'où l'intérêt ?
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
1 mars 2011 à 13:46
Pourrais tu me dire le protocoles à employé dans le language "français" (pas le code) ?
Rejoignez-nous