.NET / C # - Chuyển đổi char [] thành chuỗi


407

Cách thích hợp để biến char[]một chuỗi thành một chuỗi là gì?

Các ToString()phương pháp từ một mảng ký tự không làm các trick.

Câu trả lời:


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

12
Lưu ý rằng new string(null)sản lượng String.Emptykhông null ! Nếu bạn muốn giữ null, bạn có thể tạo một phương thức mở rộng static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod

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

@MattiVirkkunen: Ném một ngoại lệ cũng là một điều hợp lý để làm. Đó là hành vi mà tôi đã đoán được khi chuyển null cho hàm tạo chuỗi.
Charles Taylor

81

Sử dụng hàm tạo của chuỗi chấp nhận char []

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

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

1
Quên phút. Chỉ 17 giây thôi. Câu trả lời của tôi ở trên là câu trả lời được bình chọn cao thứ 2 của tôi trên trang web. Thực tế tôi đang ở đây vì ai đó đã bỏ phiếu một lần nữa, gần 10 năm sau. Và hai câu trả lời không thực sự khác nhau ... nhưng câu trả lời của tôi được đăng nhanh hơn 17 giây và điều đó có nghĩa là chênh lệch 500 phiếu: /
Joel Coehoorn


28

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"

string.Joinchỉ chấp nhận string[]thay vìchar[]
sky91

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

1
sau đó bạn nên viết string.Join<char>("_", chars)thay vìstring.Join("_", chars)
sky91

2
Trình biên dịch thực hiện tự động như kiểu ký tự được biết đến trong thời gian biên dịch.
Semen Miroshnichenko

Thật kỳ lạ vì tôi gặp lỗi biên dịch nếu tôi không xác định loại <char>
sky91


15

Sử dụng hàm tạo chuỗi chấp nhận chararray làm đố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());

Tôi nghĩ đó là những gì tôi đang tìm kiếm. Nhưng tôi không biết bất kỳ lớp nào tên là CharArray. Có lẽ bạn có ý nghĩa gì đó như:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000

CharArray không phải là lớp, chỉ là biến kiểu char []
Dilip Nannkn

13

Một cách khác

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

Debug.Assert( s.Equals( "Rock-&-Roll" ) );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.