Doubler string

Signaler
Messages postés
23
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
20 février 2006
-
Messages postés
1
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
9 mai 2005
-
bonjour
je cherche une methode pour faire ceci :
computer -----> ccoommppuutteerr
j'ai essayé avec 1 tableau, copiant 2 fois la chaine et en essayant de trier avec une variable temporaire mais ça marche pas comme je veux
faut il passer par 2 tableaux ou autre solution ?
merci

18 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

Par exemple :
string simple = "computer";
StringBuilder sb = new StringBuilder(2*simple.Length);
foreach ( char car in simple )
{
sb.AppendFormat("{0}{0}", car);
}
string strDouble = sb.ToString();

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Tres jolie solution coq !

Je la garde en mémoire si jamais, ca peut toujours servir et j'aurais pas a me casser la tete pour la trouver.



C'est dommage qu'on ai pas une option pour mettre des topics du forum en "favoris" comme pour les codes sources

Mx
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Rhalalala ce coq, il est épatant!

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
C'est clair.

Son titre de MVP C# est amplement mérité. (Je sous entend pas qu'il
l'est pas pour les autres hein :p ) Mais en tout cas, C#, il maitrise,
et il en fait bien profiter tout le monde.

Mx
Messages postés
23
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
20 février 2006

merci c'est tout bon
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Valide la réponse alors

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Bon en fait je m'étais toujours dit qu'il fallait que je vérifie les perfs d'AppendFormat, je viens de le faire, c'est la cata lol

Utilisez plutot 2 Append à la suite :
StringBuilder sb = new StringBuilder(2*simple.Length);
foreach ( char car in simple )
{
sb.Append(car);
sb.Append(car);
}

Sur une petite chaine on sent rien mais essayez avec un bon 10 000 000 caractères, on voit tout de suite la différence

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
J'espere que t'as pas effectué ce test depuis ton post plus haut, parce
que sinon ca voudrait dire que ce serait vraiment lent ^^

Mx
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Si si, il a fait tourner entre 19:26:11 et 21:01:34 lol !

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Maintenant faut faire un DateTime.Substract()

Mx
Messages postés
303
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
24 avril 2009
5
Mais ...

string simple = "computer";
string strDouble = "";
for( int i = 0; i < simple.Length; strdouble+=simple[i]+simple[i] );

N'aurait pas pu fonctionner ??

Eric
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Arg !!!
Surtout pas de concatenation de chaine.
Juste pour le fun je vais donner les temps avec mes 10 000 000 caractères (a coup de DateTime, pas besoin d'etre plus précis) :

Méthode AppendFormat : 7 secondes
Méthode "deubeule" Append : 0.9 secondes
Méthode concaténation : 1min25s => et ça c'est pour 100 000 (les 10M j'ai pas la patience ^^)

Vous choisissez quoi ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Ah sinon ricklekebekoi : tu as oublier d'incrémenter i dans ta bloucle, donc ça risque d'etre vraiment très long :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
9 novembre 2007
1
juste par curiositer, j'ai le fleme de tester :P le sb.AppendFormat(...); fait pareil que sb.Append(string.Format(...)); ?
Messages postés
303
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
24 avril 2009
5
oui pas faux, jai écrit sa vite :p

Sinon merci pour l'info, je savais pas.

Eric
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Il serait bon que visual studio 2005 indique a l'utilisateur d'utiliser
StringBuilder par un warning, quand il rencontre une concaténation de
chaine, en fait. Y'a pas énormément de personne qui sont au courant de
ce souci de performances.



Mx
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
sebseb42 : oui, tu fais juste le formattage à l'exterieur.
Mais au final ça doit être pareil niveau perfs.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
1
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
9 mai 2005

Bonjour, de passage par hasard sur ce site je découvre votre prénom (enfin je suppose) qui est aussi le mien. D'ou vous vient-il, avez-vous connaissance de l'existence d'autres genebaud ?
Je laisse mon adresse perso au cas ou ...
[mailto:genebaud.gerandal@nordnet.fr genebaud.gerandal@nordnet.fr]

a bientôt j'espère.
Génebaud