Convertir list of char to string [Résolu]

cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 5 juin 2011 à 15:54 - Dernière réponse : Sehnsucht 107 Messages postés samedi 25 novembre 2000Date d'inscription 4 mai 2013 Dernière intervention
- 6 juin 2011 à 06:16
Bonjour à tous

Comment convertir un list of char en string
on peut
dim list1 as new list of (char)
dim str as string
For Each el In list1
    str &= el
Next


il y a peut etre sans boucle ?

merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Sehnsucht 107 Messages postés samedi 25 novembre 2000Date d'inscription 4 mai 2013 Dernière intervention - 6 juin 2011 à 06:16
3
Merci
Bonjour,

Sinon on peut simplement faire :
Dim str As New String(list1.ToArray)

Ce qui est à la fois concis, et pour ainsi dire "imbattable" en terme de performances (mémoire, vitesse) chose qui peut avoir son importance sur une zone critique du code par exemple.

À ce propos une remarque concernant la boucle avec des concaténations "manuelles" (truc &= machin) ; ceci est à éviter au maximum car comme la classe String est immuable (non modifiable) à chaque passage, une nouvelle chaine est créée (contenant la concaténation de truc et machin) et la référence de truc est remplacée par celle de la concaténation.
C'est la raison pour laquelle la classe String possède une méthode Concat qui elle est mieux optimisée.

Si la boucle est inévitable pour une raison ou une autre, alors il vaut mieux envisager d'utiliser un StringBuilder comme ceci par exemple :
Dim list1 As New List(Of Char) From { "a"c, "b"c }
Dim sb As New System.Text.StringBuilder()
For Each el In list1
   sb.Append(el)
Next
Dim str As String = sb.ToString()


Bien sur je parle de cas avec de grosses boucles, pour concaténer deux éléments, il n'y a pour ainsi dire pas de différence.

Cordialement !

Merci Sehnsucht 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de Sehnsucht
CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - 5 juin 2011 à 19:08
0
Merci
Bonsoir ShayW,

Ta fonction semble correcte, voici 2 méthodes
Dim list1 As New List(Of Char)
list1.Add("a")
list1.Add("b")
Dim str As String = ""
For Each el In list1
   str &= el
Next

Ou plus simple

Dim list1 As New List(Of Char)
list1.Add("a")
list1.Add("b")
Dim str As String = String.Concat(list1.ToArray)


Cordialement CGSI3
Commenter la réponse de CGSI3
Utilisateur anonyme - 5 juin 2011 à 20:18
0
Merci
Bonsoir,
@CGSI3
Juste une petite remarque.
Si Option Strict est sur On, on est confronté à une erreur de conversion implicite de String en Char.
Pour ajouter un Char comme tu l'a fait il est conseillé d'écrire :
list1.Add("a"c)

Bonne soirée.
Commenter la réponse de Utilisateur anonyme
CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - 5 juin 2011 à 20:53
0
Merci
Bonsoir banana32,
J'ai effectivement omis Option Strict On.
Merci pour la remarque.
Bonne soirée
Commenter la réponse de CGSI3

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.