我有一个我想要处理和导入的文本文件。 < TEAM >
行包含一个团队,其下有与之相关的数据。然后,当另一行包含< TEAM >
时,它会重复该过程。我的问题是,有没有一种方法可以读取标志(< TEAM >
),并将其下的所有数据存储在下一个{{< TEAM >
之前的字符串中,而不是保持跟踪或线条并抓取数据或按顺序处理它们。在C#中1}}?我希望之后逐个处理该字符串列表。下面的代码有效,但我想保留&lt; TEAM&gt;,在字符串中。
var teams = file.ReadToEnd().Split(new [] { "< TEAM >" }, StringSplitOptions.RemoveEmptyEntries);
< TEAM >
NAME ADDRESS CITY STATE COUNTRY ZIP
Spokane Legacy 16U 1111 S Rowan Terrace Lane Spokane Washington US 99206
< COACHES >
DUTY NAME ADDRESS CITY STATE PROVINCE COUNTRY ZIP PHONE EMAIL APPROVAL NUM BBCS APPROVED
< TEAM >
NAME ADDRESS CITY STATE COUNTRY ZIP
Spokane Legacy 16U 1111 S Rowan Terrace Lane Spokane Washington US 99206
< COACHES >
DUTY NAME ADDRESS CITY STATE PROVINCE COUNTRY ZIP PHONE EMAIL APPROVAL NUM BBCS APPROVED
答案 0 :(得分:0)
有点黑客但应该工作
string[] splitTeams = teams.Replace("< TEAM >", "|< TEAM >").Split(new [] { '|' }, StringSplitOptions.RemoveEmptyEntries);
只要|
未在文件中的任何其他位置使用,该工作就应该有效。如果是,则只用一个唯一的字符或字符串替换它。
答案 1 :(得分:0)
也许是类似的东西,不是很优雅,但如果< TEAM >
只需要它下面的2行(标题和数据),它就有效
var lines = File.ReadAllLines("c:\\stackoverflow.txt");
var result = lines.Select((s, i) => s.Equals("< TEAM >") ? lines.Skip(i).Take(3) : null).Where(x => x != null);
返回:
< TEAM >
NAME ADDRESS CITY STATE COUNTRY ZIP
Spokane Legacy 16U 1111 S Rowan Terrace Lane Spokane Washington US 99206
< TEAM >
NAME ADDRESS CITY STATE COUNTRY ZIP
Spokane Legacy 16U 1111 S Rowan Terrace Lane Spokane Washington US 99206