2009-08-24 46 views
273

Cách thích hợp để biến một số char[] thành chuỗi là gì?.NET/C# - Chuyển đổi char [] thành chuỗi

Phương thức ToString() từ một mảng ký tự không thực hiện được thủ thuật.

+0

Dưới đây là câu trả lời https://stackoverflow.com/a/28143817/3926504 –

Trả lời

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

Lưu ý rằng 'chuỗi mới (null)' sản lượng 'Chuỗi .Empty' và ** not ** 'null'! Nếu bạn muốn giữ 'null', bạn có thể tạo phương thức mở rộng' chuỗi tĩnh ToStringSafe (char này [] buf) {return buf == null? null: chuỗi mới (buf); } '. – Skod

+1

@Skod: Thấy rằng nó không thể cho một biểu thức "mới" để trả về một giá trị khác với một cá thể đối tượng, điều đó không nên gây bất ngờ cho bất kỳ ai. –

58

Sử dụng các constructor của chuỗi mà chấp nhận một char []

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

Nếu chỉ có bạn ba phút nhanh hơn, bạn sẽ trả lời trước khi câu hỏi được hỏi! – DCastenholz

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

Một cách khác:

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' chỉ chấp nhận' string [] 'thay vì' char [] ' – sky91

+0

@ sky91 không chỉ, bạn có thể sử dụng String.Join Phương thức và bất kỳ T [] làm tham số, T.ToString() sẽ được gọi –

+0

sau đó bạn nên viết 'string.Join (" _ ", ký tự)' thay vì 'string.Join (" _ ", ký tự)' – sky91

9

Sử dụng các nhà xây dựng chuỗi mà chấp nhận chararray như đối số, vị trí bắt đầu và độ dài của mảng. Cú pháp được đưa ra dưới đây:

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

Một thay thế

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

Debug.Assert(s.Equals("Rock-&-Roll")); 
Các vấn đề liên quan