Nombre de lettres dans deux variables égaux [Résolu]

Signaler
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
-
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
-
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

Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

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
Messages postés
14738
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
148
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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))
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

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 !
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
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: 
Messages postés
14738
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
148
Bonjour,

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


Mon site
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

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 !
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

... 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... )
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
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é.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
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()
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

@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
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
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
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
Si j'ai trouvé avec un select case mais ... c'est long et chiant ...

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

            Select Case CharacterKey

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

            End Select

        Next


Mais sa ne marche pas ..
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

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"...
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
J'ai bien compris l'algorithme, mais je ne sais pas comment le passer sous le vbnet
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

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.)
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
Merci, je te répondrais quand j'aurais fais mon code
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
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 ?
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
Pourrais tu me dire le protocoles à employé dans le language "français" (pas le code) ?