2009-08-24 23 views
273

Qual è il modo corretto di trasformare uno char[] in una stringa?.NET/C# - Converti char [] in stringa

Il metodo ToString() da un array di caratteri non fa il trucco.

+0

Ecco la risposta https://stackoverflow.com/a/28143817/3926504 –

risposta

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

Si noti che 'nuova stringa (null)' 'rendimenti String .Empty' e ** not ** 'null'! Se vuoi mantenere 'null', puoi creare un metodo di estensione' stringa statica ToStringSafe (questo char [] buf) {return buf == null? null: nuova stringa (buf); } '. – Skod

+1

@Skod: visto che è impossibile che un'espressione "nuova" restituisca un valore diverso da un'istanza dell'oggetto, ciò non dovrebbe sorprendere nessuno. –

58

utilizzare il costruttore di corda che accetta un char []

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

Se solo avessi tre minuti più veloce, avresti risposto prima che la domanda fosse fatta! – DCastenholz

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

Un altro modo:

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' accetta solo' string [] 'invece di' char [] ' – sky91

+0

@ sky91 non solo, è possibile utilizzare String.Join Method e qualsiasi T [] come parametro, verrà chiamato T.ToString() –

+0

quindi dovresti scrivere 'string.Join (" _ ", chars)' invece di 'string.Join (" _ ", chars)' – sky91

9

utilizzare il costruttore stringa che accetta chararray come argomento, posizione iniziale e lunghezza dell'array. Sintassi è il seguente:

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

Un'altra alternativa

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

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