如何解析具有多个分隔符的文本文件

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 上的变量或您需要的数组长度。