web-dev-qa-db-ja.com

C#:string []から区切り文字列。ワンライナーはありますか?

私が好むのは次のようなものです:

string[] strArray = {"Hi", "how", "are", "you"};
string strNew = strArray.Delimit(chDelimiter);

ただし、そのような機能はありません。私はMSDNを調べましたが、同じアクションを実行する関数として私には何も見えませんでした。 StringBuilderを見ましたが、何も目立ちませんでした。配列を区切り文字列にするための、それほど複雑ではない1つのライナーを知っている人はいますか。皆さんの助けに感謝します。

更新:うわー、笑、私の悪い。私は配列自体の.Joinを見続けました、そしてそれは私から地獄を悩ませていました。 String.Joinも見ていません。みんなありがとう。それが私に受け入れることができたら、私はそうします。ヘルプを正確に。

25
XstreamINsanity

配列の場合、次を使用できます。

string.Join(", ", strArray);

個人的には、すべてのタイプの列挙可能なコレクションに適用できる拡張メソッドを使用します。

public static string Flatten(this IEnumerable elems, string separator)
{
    if (elems == null)
    {
        return null;
    }

    StringBuilder sb = new StringBuilder();
    foreach (object elem in elems)
    {
        if (sb.Length > 0)
        {
            sb.Append(separator);
        }

        sb.Append(elem);
    }

    return sb.ToString();
}

...私がそのように使用するもの:

strArray.Flatten(", ");
49
kbrimington

静的 String.Join メソッドを使用できます:

String strNew = String.Join(chDelimiter, strArray);


編集:コメントへの応答:コメントに基づいて、複数の配列を取得し、それらを連結して、結果の配列全体を結合できます。これは、IEnumerable拡張メソッドConcatを使用して実行できます。次に例を示します。

//define my two arrays...
string[] strArray = { "Hi", "how", "are", "you" };
string[] strArray2 = { "Hola", "como", "esta", "usted" };

//Concatenate the two arrays together (forming a third array) and then call join on it...
string strNew = String.Join(",", strArray.Concat(strArray2));

お役に立てれば!

6
David Hoerster

String.Join() を見てください。

サンプルは次のようになっている必要があります。

        string delimiter = ","
        string[] strArray = { "Hi", "how", "are", "you" };
        string strNew = String.Join(delimiter, strArray);
5
Incognito

String.Join を使用します

string[] strArray = {"Hi", "how", "are", "you"};
string strNew = String.Join("," strArray);
4
Jim Schubert

この場合、String.Join()がおそらく最も簡単な方法ですが、LINQも同様に使用できます。

var comSeparatedStrings = strings.Aggregate((acc, item) => acc + ", " + item);
1
theburningmonk