Jeromedu79
Messages postés119Date d'inscriptiondimanche 9 janvier 2011StatutMembreDernière intervention23 décembre 2012
-
1 mars 2011 à 12:13
Jeromedu79
Messages postés119Date d'inscriptiondimanche 9 janvier 2011StatutMembreDernière intervention23 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
Sehnsucht
Messages postés107Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention 4 mai 2013 1 mars 2011 à 19:37
@ShayW juste pour te tarabuster un peu
mieux vaut initialiser rs à "" (ou String.Empty qui fait pareil, même si je dois être le seul à m'en servir ^^) que Nothing dans un cas comme celui là (bon là encore c'est pas très grave, c'est pas faux) parce que lorsque tu concatènes au départ si on remplace les variables par leurs valeurs ça donne
rs = Nothing & "Chiffre" qui pourrait/devrait(?) planter en tout cas ça "fait bizarre" (peut-être que pour moi ^^) d'ajouter du texte non pas à rien ("") mais à quel que chose d'indéfini (Nothing)
String.Concat(key) fera la même chose que key (en moins performant) on utilise String.Concat avec plusieurs paramètres pour les concaténer entre eux, là tu concatènes key avec rien et ce résultat tu le concatènes (à l'aide de l'opérateur &) à rs.
Sinon pour raccourcir un peu plus l'écriture tu peux écrire
rs &key ' equivalent à rs rs & key
Et finalement la grande touche de gros chipotage ^^ tu utilises deux fois key.Length et texte.Length, si jamais cette fonction était utilisée souvent et faisait partie d'un "code critique" (= qui nécessite une grande performance/rapidité encore que .Net soit pas nécessairement le framework le mieux adapté dans ce cas) il vaudrait mieux stocker ces valeurs une fois avant dans des variables.
En fait cette dernière remarque me vient surtout d'une version quasi-similaire:
Dim result As New Text.StringBuilder
Dim length As Integer = key.Length
For i As Integer = 0 To value.Length - 1
result.Append(key(i Mod length))
Next
Return result.ToString()
En fait je boucle sur chaque caractère de la chaîne donnée, et je recopie le caractère de la clef à la même position (modulo sa longueur) l'appel à la longueur étant nécessaire à chaque itération, j'ai préféré l'avoir dans une variable (je fais aussi appel à un StringBuilder, qui est plus performant en ce qui concerne les (re)copies de chaines, dans l'optique d'un très long texte mis en paramètre)
Si on voulait on pouvait aussi le faire en une ligne (assez lourdingue) grâce aux méthodes d'extension et LINQ mais ça présente pas vraiment d'intérêt en terme de lisibilité/performance, à la limite c'est surtout pour le "défi"...
Voilà, désolé si vous trouvez que je chipote beaucoup parfois, c'est mon style, et puis on est aussi là pour partager (même des trucs pas forcément indispensable) ... ça c'est ma minute "je me jette des fleurs"
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 1 mars 2011 à 20:31
Non c'est bon
il faut bien apprendre
Comme je viens de l'époque pascal c c++
l'époque débrouille toi il fallait écrire toute
les méthode string tu seul aujourd'hui avec le vb.net on cherche plutot la méthode qui convient
le mieux mais des fois on veut faire trop net
par ex
rs = rs & String.Concat(key)
je sais que c'est mieux
rs&= key
mais comme je me suis dit ce n'est pas assez net
alors string.concat