public class myRows
{
public decimal Number1 { get; set; }
public decimal Number2 { get; set; }
public decimal Number3 { get; set; }
public decimal Number4 { get; set; }
public decimal Number5 { get; set; }
public decimal Number6 { get; set; }
public string Date1 { get; set; }
public myRows(string str)
{
Number1 = Convert.ToDecimal(str.Substring(3, 7));
Number2 = Convert.ToDecimal(str.Substring(15, 8));
Number3 = Convert.ToDecimal(str.Substring(24, 8));
Number4 = Convert.ToDecimal(str.Substring(36, 8));
Number5 = Convert.ToDecimal(str.Substring(47, 8));
Number6 = Convert.ToDecimal(str.Substring(58, 8));
Date1 = str.Substring(65, 25);
}
}
次に、次のようなテキストファイルデータを読み取ります
var myRows = new List<myRows>();
var myR = new StreamReader(txtFileToImport.Text);
while (!myR.EndOfStream)
{
string s = myR.ReadLine();
if (!String.IsNullOrEmpty(s.Trim()))
{
myRows.Add(new myRows(s));
}
}
myR.Close();
dataGridView1.DataSource = myRows;
問題は、テキストファイルの列値間のstartIndexと空白の長さを事前に決定することです(例:ここ)Convert.ToDecimal(str.Substring(3, 7));
列の値の間の空白は均一ではありません。列1と2の間で5になり、列7と8の間で8になる可能性があります。
現在、空白が開始および終了するインデックスを事前に知っておく必要があります。処理するテキストファイルを見なくても、空白の開始インデックスとその長さを動的に取得できますか?
私が本当に必要としているのは、str.Substring(,)
ハードコードされないように渡されるパラメーターです。
@Habib:サンプルテキストファイルはこちら