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

510

如何将char[]正确转换为字符串?

ToString()方法无法完成从字符数组到字符串的转换。

8个回答

843

这里有一个与此相关的构造函数:构造函数

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

21
请注意,new string(null) 的结果是 String.Empty 而不是 null!如果你想保留 null,可以使用扩展方法 static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); } - Skod
18
既然“新”的表达式无法返回除对象实例之外的值,这对于任何人来说都不应该是什么惊奇的事情。 - Matti Virkkunen
3
抛出异常也是一个合理的做法。这就是我会猜测将 null 传递给字符串构造函数时的行为。 - Charles Taylor
1
Path.GetInvalidFileNameChars() 适用吗? - Kiquenet

110
使用接受char[]参数的string构造函数。
char[] c = ...;
string s = new string(c);

70
如果你快三分钟,你就能在问题被问出来之前回答了! - DCastenholz
10
别管分钟了,只有17秒而已。我的回答是该网站上我第二受欢迎的回答。事实上,我现在在这里是因为有人又投了一票,几乎是10年后才投票。而这两个回答并没有什么不同......但我发表的比另一个快了17秒,这导致有500票的差距 :/ - Joel Coehoorn
@JoelCoehoorn - 14年过去了,又到了一次投票的时候!干杯。 - undefined

43
char[] characters;
...
string s = new string(characters);

34

另一种方法:

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 only accepts string[] instead of char[] - sky91
@sky91 不仅如此,您还可以使用String.Join<T>方法和任何T[]作为参数,T.ToString()将被调用。 - Simon Achmüller
1
那么你应该写 string.Join<char>("_", chars) 而不是 string.Join("_", chars) - sky91
4
编译器会自动完成这个过程,因为在编译时已知字符类型。 - Simon Achmüller

26

另一个选择

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

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

3
String.Concat 很好用,因为它接受 IEnumerable<char> 作为参数,所以在使用 LINQ 时我们不必调用 ToArray() - Fábio Batista

23
String mystring = new String(mychararray);

22
使用字符串构造函数,该构造函数的参数为字符数组、数组中的起始位置和数组的长度。语法如下所示:
string stringFromArray = new string(charArray, 0, charArray.Length);

我认为这就是我在寻找的东西。但我不知道是否有名为 CharArray 的类。你可能是指像这样的东西: char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // 只想要数组的一部分。 - Suncat2000
1
CharArray不是类,只是char[]类型的变量。 - Dilip Nannaware

0

String.Join(string separator, char[] charArray)函数可以将指定数组的元素或集合的成员使用指定的分隔符连接起来:

char[] c = { 'A', ' ', 'B', ' ', 'C', '&', 'D'};
string stringResult =  string.Join("", c);  //A B C&D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接