如何使用多个分隔符

时间:2017-06-08 17:26:20

标签: c# parsing delimiter

我有一个我试图解析的文本文件。数据是单个字符串,使用四种类型的分隔符。文件末尾还有一个记录计数与我可以忽略的数据无关。

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; }
        }

我还是编程的新手,所以请教我解析和存储这些数据的最佳方法是什么? 提前谢谢。

1 个答案:

答案 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或数组长度上的检查变量。