.NET / C#-char []を文字列に変換


407

char[]文字列に変換する適切な方法は何ですか?

ToString()文字の配列からのメソッドはトリックを行いません。

回答:


677
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 2015

8
@Skod:「新しい」式がオブジェクトインスタンス以外の値を返すことは不可能であることを考えると、それは誰にとっても驚くべきことではありません。
Matti Virkkunen、2018年

@MattiVirkkunen:例外をスローすることも妥当なことです。これが、nullを文字列コンストラクターに渡すために私が推測した動作です。
チャールズテイラー

81

char []を受け入れる文字列のコンストラクタを使用します

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

54
あなただけが3分の速さであったら、質問される前に答えたでしょう。
DCastenholz 2014年

1
分を忘れて。たった17秒です。上記の私の答えは、サイトで2番目に高い投票数の回答です。実際、私がここにいるのは、だれかがほぼ10年後、再び投票したからです。そして、2つの答えは実際には何の違いもありません...しかし、私の投稿は17秒速く投稿されました。これは、500票の差があることを意味します:/
Joel Coehoorn


28

もう1つの方法:

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 2017

タイプ<char>を定義しないとコンパイルエラーが発生するため、これは奇妙です
sky91


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.
ですか?

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" ) );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.