DOBON.NETプログラミング道掲示板

ツリー一括表示

Nomalアイコン CSVのTextFieldParser読込時のオリジナル1行データの取得について /aki (18/01/26(Fri) 10:49) #33794
Nomalアイコン Re[1]: CSVのTextFieldParser読込時のオリジナル1行データの取得について /ぼーちゃん (18/01/26(Fri) 11:34) #33795
  └Nomalアイコン Re[2]: CSVのTextFieldParser読込時のオリジナル1行データの取得について /aki (18/01/26(Fri) 12:22) #33796 解決み!


親記事 / ▼[ 33795 ]
■33794 / 親階層)  CSVのTextFieldParser読込時のオリジナル1行データの取得について
□投稿者/ aki 一般人(1回)-(2018/01/26(Fri) 10:49:53)
  • アイコン環境/言語:[Windows 7 64bit / .NET Framework 4.6] 
    分類:[.NET] 

    CSVの読込を行い、カンマ等で区切ってフィールドを取得する関数を作っています。

    public static IEnumerable<string[]> getContext(
    string path, string separator = ",", Encoding encoding = null) {
    using (Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) {
    using (TextFieldParser parser = new TextFieldParser(stream, encoding ?? Encoding.UTF8, true, false)) {

    parser.ReadLine();//最初の2行はヘッダーとしてスキップ
    parser.ReadLine();//最初の2行はヘッダーとしてスキップ

    parser.TextFieldType = FieldType.Delimited;
    parser.Delimiters = new[] { separator };
    parser.HasFieldsEnclosedInQuotes = true;
    parser.TrimWhiteSpace = true;
    while (!parser.EndOfData) {
    string[] fields = parser.ReadFields();
    yield return fields;
    }
    }
    }
    }


    この処理において、オリジナルの1行分のデータも合わせて取得したいと考えています。
    (できれば、string配列の最後に追加したい…)

    111,222,あああ,いいい
     ↓
    配列[0] = 111
    配列[1] = 222
    配列[2] = あああ
    配列[3] = いいい
    配列[4] = 111,222,あああ,いいい

    ですが、どのようにすればいいのか検討がつきません。

    もし教えていただけると大変助かります。
    どうぞ宜しくお願い致します。
違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 33794 ] / ▼[ 33796 ]
■33795 / 1階層)  Re[1]: CSVのTextFieldParser読込時のオリジナル1行データの取得について
□投稿者/ ぼーちゃん 一般人(1回)-(2018/01/26(Fri) 11:34:12)
  • アイコン
    yield returnの直前に以下を追加でどうでしょう
    
    string original = String.Join(",", fields);  //1行分の文字列取得
    fields.CopyTo(fields = new string[fields.Length + 1], 0);  //配列の要素数を増やす
    fields[fields.Length - 1] = original;

違反を報告
[ 親 33794 / □ Tree ] 返信 削除キー/

▲[ 33795 ] / 返信無し
■33796 / 2階層)  Re[2]: CSVのTextFieldParser読込時のオリジナル1行データの取得について
□投稿者/ aki 一般人(2回)-(2018/01/26(Fri) 12:22:14)
  • アイコンぼーちゃんさん

    素早いご返信ありがとうございます。

    ご提示いただいた方法で試してみますね!

    ありがとうございました。


解決み!
違反を報告
[ 親 33794 / □ Tree ] 返信 削除キー/


Mode/  Pass/


- Child Tree -