0

我有一个要处理和导入的文本文件。该< TEAM >行包含一个团队,其中包含与其相关的数据。然后,当另一行包含< TEAM >. 我的问题是,不是保持跟踪或线条并抓取数据,或按顺序处理它们,有没有办法读取标志(< TEAM >),并将其下的所有数据存储在字符串中,然后< TEAM >在 C# 中的下一个字符串中?之后我想一一处理该字符串列表。下面的代码有效,但我想在字符串中保留 < TEAM >。

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
4

2 回答 2

0

有点hack,但应该可以

string[] splitTeams = teams.Replace("< TEAM >", "|< TEAM >").Split(new [] { '|' }, StringSplitOptions.RemoveEmptyEntries);

只要|不在文件中的其他任何地方使用,它就应该有效。如果是,则只需将其替换为唯一字符或字符串即可。

于 2013-07-04T22:54:11.227 回答
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
于 2013-07-04T22:57:54.113 回答