Convertir list of char to string [Résolu]

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Sehnsucht
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013
-
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

4 réponses

Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

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 !
Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
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

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.
Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
Bonsoir banana32,
J'ai effectivement omis Option Strict On.
Merci pour la remarque.
Bonne soirée