Convertir list of char to string [Résolu]

Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
- - Dernière réponse : Sehnsucht
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Dernière intervention
4 mai 2013
- 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
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Dernière intervention
4 mai 2013
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Sehnsucht
Messages postés
417
Date d'inscription
vendredi 22 février 2008
Dernière intervention
7 janvier 2018
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
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
Messages postés
417
Date d'inscription
vendredi 22 février 2008
Dernière intervention
7 janvier 2018
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.