文字列配列を文字列に変換する


154

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

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

「Hello World!」みたいなものが欲しいです。

回答:


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

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

string.Join("", test);

3
+1-@davidgで指摘されているように、Joinのスペースを削除してこれを正しくしました
jmort253

ありがとう。コピーして貼り付けても、末尾のスペースに気付きませんでした。
Dave Ward、

2
私が使用したので、私はまた私の文字列(昏睡とスペース)の間に区切りを置くために必要な: var separator = ", "; string.Join(separator , test);
drpawelo

5
すばらしい答えです。ただし、string.Join(string.Empty, test)ではなくを使用することをお勧めしますempty-paranthesis
名前をつけてはいけない彼。

36

メソッドの前述の使用を使用するよりも少し速いオプションJoin()は、Concat()メソッドです。空のデリミタパラメータは必要ありませんJoin()。例:

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

string result = String.Concat(test);

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


1
Concatより良いです。の内部コードではJoin、各項目の後にセパレータを追加します。しかしConcat、そのようなコードはありませんJoin。それは、よりも単純で直接的です。これが一番の答えです。
Squirrel.Downy

22

試してください:

String.Join("", test);

2つの要素を結合する文字列を返す必要があります。""文字列をセパレータなしで結合することを示します。


それで「HelloWorld!」単語の間にスペースがない?
jmort253 2011年

1
@ jmort253- "Hello "質問の元の文字列にはすでに末尾のスペースがありました。スペースがまだない場合は、それで間違いありません" "。区切り文字として使用する方が理にかなっています。
davidg 2011年

19

単純な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()よりも要素の数が多い文字列配列を実行する必要があります。セパレーターとして ""(空白)引数を指定するだけです。StringBuilderはパフォーマンスのためにも使用できますが、コードが少し長くなります。


ConcatそしてJoinより速くよりもStringBuilder、あなたが連結する4つの以下の文字列を持っている場合。
品質の触媒

3

Aggregate 同じに使用することもできます。

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);

1
String.Join複数の余分な文字列が作成されるため、これは実装するのに非常に無駄な方法です。の適切なバリアントについては、stackoverflow.com / questions / 217805 /…を参照してくださいAggregate
Alexei Levenkov

1
    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();
    }

3
これは手動で実装しているだけstring.Join(" ", array)です(ただし、末尾にスペースが追加されている場合を除く)。ライブラリにあるものを使用しないのはなぜですか?
davidg 2011年

1
@davidg-Ashwiniはおそらく新しいです。既存のツールの使い方を学び、大学の「自分でやらなければならない」という考え方を乗り越えるには、慣れる必要があります。それは私のためにした。結局のところ、人々はなぜ彼らの同僚が自分の周りにサークルをコーディングできるのか疑問に思い、それから彼らはその価値をコードライブラリーで確認して再利用します。
jmort253 2011年

私が覚えているものは何でも、それですべてを助けようとしました。誰かがより良い解決策を持っている場合は、いつでも自由に投稿できます。ウルはアプト...誰もが完璧ではないです...長年の経験の上に、あなたはuはこの事実を否定しない..hopeを学ぶ...話
プログラマ

@Ashwini-あなたを怒らせようとしていませんでした。さまざまなエンジニアとの私の経験に基づいて、@ davidgの質問に答えるだけです。
jmort253 '30年

2
また、連結された文字列には、その末尾に追加のスペースが追加されます。したがって、これは質問に完全に対応していません。
jmort253 '31年

0

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

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

return text;

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


-1

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

ただし、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);

-4

このような:

string str= test[0]+test[1];

ループを使用することもできます。

for(int i=0; i<2; i++)
    str += test[i];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.