如何解析具有多个分隔符的文本文件
How to parse text file with multiple delimiters
我有一个文本文件正在尝试解析。数据是单个字符串并使用四种类型的分隔符。文件末尾还有一个与我可以忽略的数据无关的记录数。
分隔符:
数据开头:~
字段分隔符:|
记录结束:#
数据结束:^
示例文本文件:
~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; }
}
我还是编程新手,请教我解析和存储这些数据的最佳方式是什么?
提前致谢。
如果你知道所有的分隔符,你可以使用这样的东西:
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
上的变量或您需要的数组长度。
我有一个文本文件正在尝试解析。数据是单个字符串并使用四种类型的分隔符。文件末尾还有一个与我可以忽略的数据无关的记录数。
分隔符:
数据开头:~
字段分隔符:|
记录结束:#
数据结束:^
示例文本文件:
~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; }
}
我还是编程新手,请教我解析和存储这些数据的最佳方式是什么? 提前致谢。
如果你知道所有的分隔符,你可以使用这样的东西:
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
上的变量或您需要的数组长度。