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:示例文本文件在这里