Précédent   Forum du club des développeurs et IT Pro > Dotnet > Général Dotnet > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, sources pour .NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/03/2012, 10h47   #1
joey_5
Invité régulier
 
Homme
Développeur informatique
Inscription : juillet 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 6
Points : 5
Points : 5
Par défaut Copie d'une chaîne dans une autre String CopyTo

Aux vues des exemples lamentables de l'utilisation de la méthode CopyTo de String en C# trouvés sur le net, voici un exemple concret de substitution d'une chaîne (insertion en coller) dans une autre chaîne.

Code C# :
1
2
3
4
5
6
7
String chaineDestination = "0000000000";
 
String chaineAColler = "1111";
 
Char[] chaineDestinationChars = chaineDestination .ToCharArray();
 
chaineAColler.CopyTo(0, chaineDestinationChars, 2, chaineAColler.Length);

La chaîne "1111" est copiée de l'index 0 sur une une longueur de 4 (toute sa longueur) à l'index 2 dans la chaîne "0000000000".

"0000000000" devient :

"0011110000"

Et pour finir pour récupérer la chaîne modifiée :
Code C# :
chaineDestination = new String(chaineDestinationChars);
joey_5 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/03/2012, 11h38   #2
gcorbineau
Membre Expert
 
Homme Guillaume
Développeur .NET
Inscription : juillet 2006
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2006
Messages : 854
Points : 1 296
Points : 1 296
Tu as plus simple avec la fonction String.Insert
gcorbineau est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 28/03/2012, 14h50   #3
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 801
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2004
Messages : 17 801
Points : 34 090
Points : 34 090
Citation:
Envoyé par gcorbineau Voir le message
Tu as plus simple avec la fonction String.Insert
Effectivement...


D'autre part, le titre est incorrect : tu n'as pas "copié une chaine dans une autre". Les chaines sont immuables, c'est-à-dire qu'on ne peut pas les modifier. Tous ce qu'on peut faire, c'est en créer une autre qui contient la modification (ce que tu as fait)
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 30
Vieux 28/03/2012, 16h42   #4
h2s84
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 748
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 28
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 748
Points : 5 197
Points : 5 197
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
Citation:
Envoyé par gcorbineau Voir le message
Tu as plus simple avec la fonction String.Insert
Avec String.Insert, Il te faut d'autre(s) bidouille(s) pour en arriver à ce que joey_5 fait dans son post avec String.Copy.

Avec la méthode String.Insert tu insères une chaîne de caractères à partir d'une position donnée et cela grossit le nombre de caractères et ce n'est ce qu'on veut.

Si tu utilises String.Insert seule alors tu feras le code suivant :
Code C# :
1
2
3
4
string chaineDestination = "0000000000";
string chaineAColler = "1111";
string testInsertSimple = chaineDestination.Insert(2, chaineAColler);
Console.WriteLine(testInsertSimple);
La sortie sera 00111100000000 et ce n'est pas le résultat attendu qui est 0011110000.

Si en plus de String.Insert tu demandes de l'aide à la méthode String.Remove alors ça marche tu feras comme suit (ce n'est qu'une solution il peut en exister 1000) :
Code C# :
1
2
3
4
string chaineDestination = "0000000000";
string chaineAColler = "1111";
string testInsertPlusBidouille = chaineDestination.Remove(2, chaineAColler.Length).Insert(2, chaineAColler);
Console.WriteLine(testInsertPlusBidouille);
Je préfère cette méthode avec moins de lignes de code que la méthode avec String.Copy.

Dans tout ça, je ne copie pas réellement dans la chaîne initiale parce que tout simplement comme le dit Tomlev ce type est immuable.
__________________
Consultant .Net chez SoftFluent
Découvrir notre produit CodeFluent Entities

Adhérer à l'association Fier d'être développeur
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/03/2012, 17h32   #5
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 801
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2004
Messages : 17 801
Points : 34 090
Points : 34 090
Citation:
Envoyé par h2s84 Voir le message
Avec String.Insert, Il te faut d'autre(s) bidouille(s) pour en arriver à ce que joey_5 fait dans son post avec String.Copy.
Effectivement, j'avais lu la question un peu vite...
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h12.


 
 
 
 
Partenaires

Hébergement Web