2009-08-24 12 views
273

Quelle est la bonne façon de transformer un char[] en une chaîne?.NET/C# - Convertir char [] en chaîne

La méthode ToString() à partir d'un tableau de caractères ne fait pas l'affaire.

+0

Voici la réponse https://stackoverflow.com/a/28143817/3926504 –

Répondre

474
char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'}; 
string s = new string(chars); 
+8

Notez que 'nouvelle chaîne (null)' 'donne chaîne .Empty' et ** pas ** 'null'! Si vous voulez garder 'null', vous pouvez faire une méthode d'extension' chaîne statique ToStringSafe (ce char [] buf) {return buf == null? null: nouvelle chaîne (buf); } '. – Skod

+1

@Skod: Voyant qu'il est impossible pour une "nouvelle" expression de renvoyer une valeur autre qu'une instance d'objet, cela ne devrait surprendre personne. –

58

Utilisez le constructeur de chaîne qui accepte un char []

char[] c = ...; 
string s = new string(c); 
+36

Si seulement vous étiez trois minutes plus vite, vous auriez répondu avant que la question a été posée! – DCastenholz

28
char[] characters; 
... 
string s = new string(characters); 
17
String mystring = new String(mychararray); 
23

Une autre façon:

char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'}; 
string s = string.Join("", chars); 
//we get "a string" 
// or for fun: 
string s = string.Join("_", chars); 
//we get "a_ _s_t_r_i_n_g" 
+0

'string.Join' n'accepte que' string [] 'au lieu de' char [] ' – sky91

+0

@ sky91 non seulement, vous pouvez utiliser String.Join Méthode et tout T [] comme paramètre, T.ToString() sera appelé –

+0

alors vous devriez écrire 'string.Join (" _ ", chars)' au lieu de 'string.Join (" _ ", chars)' – sky91

9

Utilisez le constructeur de chaîne qui accepte chararray comme argument, position de départ et longueur du tableau. La syntaxe est donnée ci-dessous:

string charToString = new string(CharArray, 0, CharArray.Count()); 
5

Une autre alternative

char[] c = { 'R', 'o', 'c', 'k', '-', '&', '-', 'R', 'o', 'l', 'l' }; 
string s = String.Concat(c); 

Debug.Assert(s.Equals("Rock-&-Roll")); 
Questions connexes