CSV出力で、1データを列方向に追加するロジックを作成しています。
例えば、Data1=1,2,3,4,5 Data2=A,B,C,D,Eの場合、この2つを1つのCSVファイルに出力する場合に、
1,A
2,B
3,C
4,D
5,E
と出力させようとしています。
そこで以下のように実装してみました。
メンバ変数
lang
1List<StringBuilder> WriteData = new List<StringBuilder>();
コンストラクタ内
lang
1for(int i=0;i<100000;i++) 2{ 3 WriteData.Add(new StringBuilder().Append(string.Empty)); 4}
これはCSVファイルの行数が99999行までと言う仕様があるため、一旦すべてstring.Emptyを入れてます。
あとデータとしてstring[]型のデータ dataがあるとします。
メインのロジック
lang
1int i=0; 2foreach(var sb in WriteData) 3{ 4 if(sb.Length > 0) 5 { 6 sb.Append(","); //何かデータが存在する場合は先にカンマを付加 7 } 8 if(i >= data.Length) 9 { 10 sb.Append("-"); //データ配列の数を超えた場合はハイフンを補う 11 } 12 else 13 { 14 sb.Append(data[i]); //それ以外は実データをAppend 15 } 16 i += 1; 17}
このメインのロジックをメソッドとし、string[]データ配列を取得後、このメソッドに渡す感じにしています。
動かしてみた感じでは、良さそうでしたが、何となく分かり難いような気もしています。
他に効率の良い方法がありましたら、アドバイス頂ければと思います。
また上記コードの問題点もありましたらお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/16 13:20