2009-08-24 2 views
273

Jaki jest właściwy sposób przekształcenia char[] w ciąg znaków?.NET/C# - Konwertuj char [] na ciąg

Metoda ToString() z tablicy znaków nie daje sobie rady.

+0

Oto odpowiedź https://stackoverflow.com/a/28143817/3926504 –

Odpowiedz

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

Zauważ, że 'nowy łańcuch (null)' 'String plony .Empty' i ** nie ** 'null'! Jeśli chcesz zachować 'null', możesz utworzyć metodę rozszerzenia' static string ToStringSafe (this char [] buf) {return buf == null? null: nowy ciąg (buf); } '. – Skod

+1

@Skod: Widząc, że "nowe" wyrażenie nie może zwrócić wartości innej niż instancja obiektu, nie powinno to nikogo dziwić. –

58

pomocą konstruktora sznurka, który przyjmuje char []

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

Gdybyś tylko trzy minuty był szybszy, odpowiedziałbyś, zanim zadano pytanie! – DCastenholz

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

jeden sposób:

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' akceptuje tylko' string [] 'zamiast' char [] ' – sky91

+0

@ sky91 nie tylko, możesz użyć String.Join Metoda i dowolny T [] jako parametr, T.ToString() zostanie wywołany –

+0

powinieneś napisać 'string.Join (" _ ", chars)' zamiast 'string.Join (" _ ", chars)' – sky91

9

pomocą konstruktora łańcuch, który przyjmuje chararray jako argument, pozycja początkowa i długość tablicy. Składnia jest podany poniżej:

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

Inną alternatywą

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

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