.NET / C#-将char []转换为字符串


406

将a char[]转换为字符串的正确方法是什么?

ToString()字符数组中的方法不能解决问题。

Answers:


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

12
注意new string(null)屈服String.Empty不是 null!如果要保留null,可以扩展方法static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
Skod

8
@Skod:看到“新”表达式不可能返回对象实例以外的值,这对任何人都不应该感到惊讶。
Matti Virkkunen

@MattiVirkkunen:抛出异常也是一件合理的事情。这就是我猜测将null传递给字符串构造函数的行为。
查尔斯·泰勒

81

使用接受char []的字符串的构造函数

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

54
如果只比您快三分钟,您将在提出问题之前已经回答了!
DCastenholz 2014年

1
忘了几分钟。只有17秒。我上面的答案是我在网站上获得第二高投票的答案。实际上,我现在在这里是因为近十年后有人再次投票。这两个答案实际上没有什么不同...但是我的发布速度快了17秒,这意味着有500票的差额:/
Joel Coehoorn


28

另一种方式:

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.Join只接受string[]而不是char[]
sky91

@ sky91不仅可以使用String.Join <T>方法,而且任何T []作为参数,都将调用T.ToString()
Semen Miroshnichenko

1
那么您应该写string.Join<char>("_", chars)而不是string.Join("_", chars)
sky91

2
编译器自动执行此操作,因为在编译时已知chars类型。
Semen Miroshnichenko

这很奇怪,因为如果我不定义类型<char>
则会


15

使用接受chararray作为参数,字符串的起始位置和长度的字符串构造函数。语法如下:

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

我想这就是我想要的。但是我不知道任何名为CharArray的类。您可能是说以下意思吗?char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000

CharArray不是类,只是char []类型的变量
Dilip Nannaware

13

另一种选择

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

Debug.Assert( s.Equals( "Rock-&-Roll" ) );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.