整数の配列をコンマ区切りの文字列に変換します


273

簡単な質問です。私はC#の初心者ですが、どうすれば次のことを実行できますか

  • 整数の配列をコンマ区切りの文字列に変換したい。

私が持っています

int[] arr = new int[5] {1,2,3,4,5};

1つの文字列に変換したい

string => "1,2,3,4,5"

回答:


539
var result = string.Join(",", arr);

これは次のオーバーロードを使用しますstring.Join

public static string Join<T>(string separator, IEnumerable<T> values);

この場合、明示的な総称引数を渡す必要はありません。推測されます。
Leppie、2011年

6
.NET 4以前のstring.Join( "、"、Array.ConvertAll(arr、i => i.ToString()))
TPAKTOPA

これの逆を行う簡単な方法はありますか?文字列を取得して配列に入れますか?
Kory 2015年

3
@Kory:String.Splitメソッドを使用して、msdn.microsoft.com
Cheng Chen

132

.NET 4

string.Join(",", arr)

以前の.NET

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))

17
.NET4より前のバージョンをありがとう!
kdenney

1
.net 4バージョンを使用できないことに気づきました。あなたの回答を見るまで、なぜエラーが発生したのか理解できませんでした。ありがとう。
Luis Tellez 2013年

.NET 4.5を使用しています。カンマ区切りの数字を文字列で連結しようとしました。「string []をcharに変換できません」というエラーが表示されました。したがって、以前のバージョンは問題なく動作しました。
Prasanth G

10
int[] arr = new int[5] {1,2,3,4,5};

Linqを使用できます

String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);

5

このタスクを簡単にするために、拡張メソッドのペアを持つことができます:

public static string ToDelimitedString<T>(this IEnumerable<T> lst, string separator = ", ")
{
    return lst.ToDelimitedString(p => p, separator);
}

public static string ToDelimitedString<S, T>(this IEnumerable<S> lst, Func<S, T> selector, 
                                             string separator = ", ")
{
    return string.Join(separator, lst.Select(selector));
}

だから今ちょうど:

new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();

3

LINQ Aggregateメソッドを使用して整数の配列をコンマ区切りの文字列に変換する

var intArray = new []{1,2,3,4};
string concatedString = intArray.Aggregate((a, b) =>Convert.ToString(a) + "," +Convert.ToString( b));
Response.Write(concatedString);

出力は

1、2、3、4

これは、.net 4がインストールされていない場合に使用できるソリューションの1つです。


ただし、文字列の連結によりパフォーマンスが低下します
Simon Belanger 2013

はい、それは貧弱に動作しますが、.net 4.0以前はString.joinはパラメーターとして文字列配列のみを取るため、文字列に変換する必要があります。ToStringを使用することもできますが、パフォーマンスが向上しますが、null例外の問題があります
sushil pandey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.