Convertir list of char to string

Résolu
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 5 juin 2011 à 15:54
Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre 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
A voir également:

4 réponses

Sehnsucht Messages postés 107 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 4 mai 2013
6 juin 2011 à 06:16
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 !
3
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
5 juin 2011 à 19:08
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
0
Utilisateur anonyme
5 juin 2011 à 20:18
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.
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
5 juin 2011 à 20:53
Bonsoir banana32,
J'ai effectivement omis Option Strict On.
Merci pour la remarque.
Bonne soirée
0
Rejoignez-nous