我有一个StreamReader,它正在从文件中读取行。
Tyndall Centre grim file created on 22.01.2004 at 17:57 by Dr. Tim Mitchell
.pre = precipitation (mm)
CRU TS 2.1
[Long=-180.00, 180.00] [Lati= -90.00, 90.00] [Grid X,Y= 720, 360]
[Boxes= 67420] [Years=1991-2000] [Multi= 0.1000] [Missing=-999]
Grid-ref= 1, 148
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
3020 2820 3040 2880 1740 1360 980 990 1410 1770 2580 2630
Grid-ref= 1, 311
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
490 290 280 230 200 250 440 530 460 420 530 450
Grid-ref= 1, 312
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
460 280 260 220 190 240 430 520 450 400 520 410
如果行包含正则表达式模式,如何停止向列表中添加行?例如,在下面的代码中,我有一个包含单词“ Grid”的正则表达式。我想将单词“ Grid”的第一次出现之前的每一行添加到列表中,我希望它停止添加找到单词“ Grid”后,将其添加到列表中。因此,名为HeaderParse <>的列表应仅包含以下行:
Tyndall Centre grim file created on 22.01.2004 at 17:57 by Dr. Tim Mitchell
.pre = precipitation (mm)
CRU TS 2.1
[Long=-180.00, 180.00] [Lati= -90.00, 90.00] [Grid X,Y= 720, 360]
[Boxes= 67420] [Years=1991-2000] [Multi= 0.1000] [Missing=-999]
这是我正在使用的代码:
private void button1_Click(object sender, EventArgs e)
{
StreamReader reader = File.OpenText("cru-ts-2-10.1991-2000-cutdown.pre");
string line;
var regex = new Regex(@"(Grid)");
List<String> HeaderParse = new List<string>();
while ((line = reader.ReadLine()) != null)
{
if (!regex.IsMatch(line))
{
HeaderParse.Add(line);
}
else
{
//stop it adding stuff here
}
}
MessageBox.Show("This button has been clicked");
}
答案 0 :(得分:2)
while ((line = reader.ReadLine()) != null)
{
if (!regex.IsMatch(line))
{
HeaderParse.Add(line);
}
else
{
//stop it adding stuff here
break;
}
}
答案 1 :(得分:2)
private void button1_Click(object sender, EventArgs e)
{
StreamReader reader = File.OpenText("cru-ts-2-10.1991-2000-cutdown.pre");
string line;
var regex = new Regex(@"(Grid)");
List<String> HeaderParse = new List<string>();
while ((line = reader.ReadLine()) != null && !regex.IsMatch(line))
{
HeaderParse.Add(line);
}
MessageBox.Show("This button has been clicked");
}
答案 2 :(得分:0)
Break正是为此目的而设计的。所以只需添加。
private void button1_Click(object sender, EventArgs e)
{
StreamReader reader = File.OpenText("cru-ts-2-10.1991-2000-cutdown.pre");
string line;
var regex = new Regex(@"(Grid)");
List<String> HeaderParse = new List<string>();
while ((line = reader.ReadLine()) != null)
{
if (!regex.IsMatch(line))
{
HeaderParse.Add(line);
}
else
{
//stop it adding stuff here
break;
}
}
MessageBox.Show("This button has been clicked");
}