Optimisation: insérer un espace tous les deux caractères [Résolu]

Messages postés
148
Date d'inscription
lundi 12 février 2007
Dernière intervention
9 novembre 2013
- 3 févr. 2009 à 09:25 - Dernière réponse :
Messages postés
148
Date d'inscription
lundi 12 février 2007
Dernière intervention
9 novembre 2013
- 3 févr. 2009 à 15:56
Salut à tous,

Comme le titre l'indique, j'avais besoin d'insérer un espace tous les deux caractères dans une variable string qui peut changer de taille. J'ai essayé de le faire moi même, et j'ai réussi, mais c'est plus sur la méthode que je me posais des questions, ça va comme ça? y a t il moins gourmand?

Dim temp as string
Dim buffer as string

While Temp <> ""
            buffer = buffer & Left(Temp, 2) & " "
            Temp = Mid(Temp, 2)
        End While
      
        s = buffer

Merci!
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 3 févr. 2009 à 13:40
3
Merci
le gros probleme dans ton code est la reallocation continue de mémoire.

es-tu bien en .Net ? si oui, tu as des StringBuilders
sinon, je peux te préparer quelque chose...

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Dernière intervention
23 mars 2011
- 3 févr. 2009 à 14:23
1
Merci
Salut,

Voici une manière parmi tant d'autres pour y arriver (j'ignore si c'est la meilleure en revanche )





Dim
 str As String =  "abcdefghij"





' La boucle For ne s'initialise qu'une fois donc si on rajoute des caractères


' dans la variable de type String --> la boucle va s'arrêter avant d'atteindre


' la fin de cette chaine.




' Il faut donc prendre le nombre de caractères de la chaine et on rajoute le nombre d'espaces


' nécessaires


For
 nb As Integer  = 0 To str.Length + Math.Round(str.Length / 20, MidpointRounding.ToEven) - 1 Step 3
     str =  str.Insert(nb,  " " )
Next





On obtient la chaine suivante

--> ab cd ef gh ij

++

Fauve


<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
Commenter la réponse de cs_fauve
Messages postés
148
Date d'inscription
lundi 12 février 2007
Dernière intervention
9 novembre 2013
- 3 févr. 2009 à 15:26
0
Merci
Je connaissais pas les .insert, merci pour ta méthode Fauve!

Renfield, te sachant de bons conseils, je vais revoir les stringbuilders (dont j'ai un souvenir douloureux).

"la reallocation continue de mémoire." 
< à cause du while? Je crois savoir que les variables string sont plus lourdes que les integer, ce serait mieux en remplaçant       While Temp <> ""      par     While temp.lengh >0        ?

Bien sur, je cherche plus à m'instruire sur les bonnes pratiques que qu'autre chose, c'est pour ça que je pinaille :).
Commenter la réponse de Billybobbonnet
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 3 févr. 2009 à 15:30
0
Merci
tu sais combien de blancs tu dois insérer...
tu peux donc agrandir la chaine une fois pour toutes
Commenter la réponse de Renfield
Messages postés
148
Date d'inscription
lundi 12 février 2007
Dernière intervention
9 novembre 2013
- 3 févr. 2009 à 15:56
0
Merci
Dans ce cas là, c'est un signal radio fréquence de longueur variable que je reçois (en fait c'est des paquets de 10 bits), converti en hexadécimal et mis en forme en groupes de 2 caractères. Le coup la longueur variable, c'est assez dur à expliquer compte tenu que j'ai des messages sur 10 bits, mais dans les faits, j'ai dans certains cas (déterminés) 3 caractères hexa de moins.

 A chaque message reçu, je lance une fonction qui le met en forme et l'interprète. La fonction peut être amenée à être lancée très souvent, en fonction du nombre de messages reçus, d'où la volonté d'optimiser.
Commenter la réponse de Billybobbonnet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.