■環境
Visual Studio Professional 2017
C# 7.3
.NET Framework 4.7.2
※回答は、C#8.0/.NET Core 3.1でしかできない手段でもOKです。
■やりたいこと
カンマ区切りの文字列をSplitで分解してLINQで処理したいのですが、その際の結果の数を指定した数にしたいのです。例えば以下のようなコードがあったとして、
C#
1var text = "0,1,2"; 2var values = text.Split(',').Select(a => Convert.ToInt32(a)).ToArray();
上記の場合、valuesの要素数は3になると思いますが、これを指定した数の配列になるようにしたいのです。
- valuesはList<T>ではなくT[]にする必要があります。
- 要素数はSplit()の結果よりも少ないことも多いこともあります。不足時のvaluesの値はdefaultでOKです。
やりたいことを直接実現するための、自分で書いたダサいコードは以下です:
C#
1var values = new int[N]; 2int i = 0; 3foreach(var valueText in text.Split(',')) 4{ 5 if(i == N) 6 { 7 break; 8 } 9 values[i] = Convert.ToInt32(valueText); 10 ++i; 11}
なんか効率が良くて一行でスパっと記述する方法、ないでしょうか。
回答2件
あなたの回答
tips
プレビュー