前提・実現したいこと
約1500行で10列のcsvファイルがあります。
csvファイルは、
ヘッダ
0.1 18.00 ・・・・
0.2 17.99 ・・・・
0.3 17.99 ・・・・
0.4 17.98 ・・・・
0.5 17.97 ・・・・
.
.
.
というような感じのテキストになっています。
このとき、各行の2列目の値を2行目から調べていって、2列目の値が、2行目2列目の値より0.02以上低い値の時の最初の行番号を取得したいです。
上記のcsvファイルの場合、5行目の行番号を取得したいです。
自分なりに調べたものの、うまくいきませんでした。
どうかご教授願えないでしょうか。よろしくお願い申し上げます。
該当のソースコード
c#
1public string[][] Data(string file) 2 { 3 char[] linedelimiter = { '\n' }; 4 char[] columndelimiter = { ' ' }; 5 6 List<string[]> ReadCSVList = new List<string[]>(); 7 8 using(StreamReader Sr = new StreamReader(file, Encoding.UTF8)) 9 { 10 Sr.ReadLine(); 11 while (!Sr.EndOfStream) 12 { 13 string[] ReadCSVLines = Sr.ReadToEnd().Split(linedelimiter); 14 foreach(string ReadCSVLine in ReadCSVLines) 15 { 16 string[] DataItem = ReadCSVLine.Split(columndelimiter); 17 if(DataItem.Length == 10) 18 { 19 ReadCSVList.Add(DataItem); 20 } 21 } 22 } 23 } 24 return ReadCSVList.ToArray(); 25 } 26 27public int GetLineNumber(string file) 28 { 29 int Notfound = -1; 30 31 double T = double.Parse(Data(file)[0][1]); 32 int Length = Data(file).Length; 33 34 for (int i = 1; i < Length; i++) 35 { 36 double X = double.Parse(Data(file)[i][1]); 37 if (X - T <= - 0.02) 38 { 39 return i; 40 } 41 } 42 return Notfound; 43 }
試したこと
ネットで調べはしたものの、-1しか値が返ってきません。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017 .NET Framework 4.6.1
回答1件
あなたの回答
tips
プレビュー