我有一个我试图解析的文本文件。数据是单个字符串,使用四种类型的分隔符。文件末尾还有一个记录计数与我可以忽略的数据无关。
Deliminators:
数据开头:〜
现场分离器:|
记录结束:#
数据结束:^
示例文本文件:
~001|John|Smith|300#002|Abby|Williams|250#003|Tom|Jones|400#004|Claire|Benton|300^
Count:4
解析后的数据应存储在“Account”对象的列表或集合中
public class Account
{
public string IdNum { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string AmtDue { get; set; }
}
我还是编程的新手,所以请教我解析和存储这些数据的最佳方法是什么? 提前谢谢。
答案 0 :(得分:0)
如果您了解所有分隔符,则可以使用以下内容:
var s = "~001|John|Smith|300#002|Abby|Williams|250#003|Tom|Jones|400#004|Claire|Benton|300^Count: 4";
// select a line between "~" and "^".
var data = new string(s.SkipWhile(c => c == '~').TakeWhile(c => c != '^').ToArray());
var records = data.Split('#');
var accounts = records.Select(record => record.Split('|'))
.Select(items => new Account
{
IdNum = items[0],
FirstName = items[1],
LastName = items[2],
AmtDue = items[3]
})
.ToList();
foreach (var account in accounts)
{
Console.WriteLine(account.IdNum);
Console.WriteLine(account.FirstName);
Console.WriteLine(account.LastName);
Console.WriteLine(account.AmtDue);
Console.WriteLine();
}
首先按行分隔符拆分,然后按字段分隔符拆分。
P.S。不要忘记null
或数组长度上的检查变量。