web-dev-qa-db-ja.com

文字列配列を文字列に変換します

文字列配列を単一の文字列に変換したいと思います。

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

「Hello World!」のようなものが欲しいです。

129
user522860
string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string.Join("", test);
235
Dave Ward

Join()メソッドの前述の使用を使用するよりも少しfasterオプションは Concat() メソッドです。 Join()のように空の区切り文字パラメーターは必要ありません。例:

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

string result = String.Concat(test);

したがって、おそらくより高速です。

20

試してください:

String.Join("", test);

2つの要素を結合する文字列を返す必要があります。 ""は、文字列を区切り文字なしで結合することを示します。

19
davidg

シンプルなstring.Concat()が必要です。

string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string result = string.Concat(test);

セパレーター(スペース、コンマなど)も追加する必要がある場合は、string.Join()を使用する必要があります。

string[] test = new string[2];

test[0] = "Red";
test[1] = "Blue";

string result = string.Join(",", test);

これをstring.Join()よりも要素の背後にある文字列配列で実行する必要がある場合、performaceの観点からはより良いです。セパレータとして ""(空白)引数を指定するだけです。 StringBuilderはパフォーマンスのためにも使用できますが、コードが少し長くなります。

14
ePandit

Aggregateも同様に使用できます。

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
2
vivek nuna
    string ConvertStringArrayToString(string[] array)
    {
        //
        // Concatenate all the elements into a StringBuilder.
        //
        StringBuilder strinbuilder = new StringBuilder();
        foreach (string value in array)
        {
            strinbuilder.Append(value);
            strinbuilder.Append(' ');
        }
        return strinbuilder.ToString();
    }
1
programmer

受け入れられた答えでは、String.Joinはその使用法ごとのベストプラクティスではありません。 OPは最初の項目に末尾のスペースを含んでいるため、String.Concatを使用する必要があります: "Hello"(ヌル区切り文字を使用する代わりに)。

ただし、OPは結果に "Hello World!"を要求したため、String.Joinは依然として適切なメソッドですが、末尾の空白は代わりに区切り文字に移動する必要があります。

// string[] test = new string[2];

// test[0] = "Hello ";
// test[1] = "World!";

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);

この方法を使用して、プロジェクトを高速化しました。

RichTextBox rcbCatalyst = new RichTextBox()
{
    Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();

return text;

RichTextBox.Textは、配列を自動的に複数行の文字列に変換します!

0
Bamdad