C# 为什么没有';你不读文件中的下一行吗?

C# 为什么没有';你不读文件中的下一行吗?,c#,C#,我试图将字符串设置为从一个txt文件中读取一行,该文件给出了要处理的文件的位置,但出于某种原因,它不想读取下一行,并不断生成与第0行相同的结果 private void GetRaceNameButton_Click(object sender, EventArgs e) { string TestRaceNameFile = "g:\\Racing App\\RaceTestFile.s"; string TestRaceNameFileUnknown

我试图将字符串设置为从一个txt文件中读取一行,该文件给出了要处理的文件的位置,但出于某种原因,它不想读取下一行,并不断生成与第0行相同的结果

private void GetRaceNameButton_Click(object sender, EventArgs e)
    {
        string TestRaceNameFile = "g:\\Racing App\\RaceTestFile.s";
        string TestRaceNameFileUnknown = "g:\\Racing App\\RaceTestFileUnknown.s";

        System.IO.File.WriteAllText(TestRaceNameFile, string.Empty);
        System.IO.File.WriteAllText(TestRaceNameFileUnknown, string.Empty);
        var LinePosition2 = 0;
        String UpdateFileName = File.ReadLines(@"G:\\Racing App\\Update\\all.info").ElementAtOrDefault(LinePosition2);

        StreamReader sr;
        sr = new StreamReader(UpdateFileName);
        var set = sr.ReadToEnd();

        using (StreamReader su = File.OpenText(UpdateFileName))
        {
            string f = String.Empty;
            while ((f = su.ReadLine()) != null)
            {
                var GetRace = new Regex(@"(?<=headline: "")(.*?)(?=""[,])").Matches(set);
                foreach (var Race in GetRace)
                {
                    string RaceToString = Race.ToString();

                    //Sweepstakes                        if (RaceToString.Contains("Sweepstakes") && !RaceToString.Contains("Juvenile") && !RaceToString.Contains("Mares") && !RaceToString.Contains("Apprentice") && !RaceToString.Contains("Amateur") && !RaceToString.Contains("Maiden") && !RaceToString.Contains("Fillies") && !RaceToString.Contains("INH") && !RaceToString.Contains("Beginners") && !RaceToString.Contains("Classified") && !RaceToString.Contains("Conditional") && !RaceToString.Contains("Conditioning") && !RaceToString.Contains("Conditions") && !RaceToString.Contains("National Hunt") && !RaceToString.Contains("Novices") && !RaceToString.Contains("Selling") && !RaceToString.Contains("Handicap") && !RaceToString.Contains("Intermediate") && !RaceToString.Contains("Hunter") && !RaceToString.Contains("Claiming") && !RaceToString.Contains("Hurdle") && !RaceToString.Contains(" Stakes") && !RaceToString.Contains("Chase") && !RaceToString.Contains("Flat"))
                    {
                        File.AppendAllText(TestRaceNameFile, RaceToString + Environment.NewLine);
                        File.AppendAllText(TestRaceNameFile, "Sweepstakes" + Environment.NewLine);
                        File.AppendAllText(TestRaceNameFile, Environment.NewLine);
                    }

                }

            LinePosition2++;
            Console.WriteLine(LinePosition2);
private void GetRaceNameButton\u单击(对象发送方,事件参数e)
{
string TestRaceNameFile=“g:\\Racing App\\RaceTestFile.s”;
string TestRaceNameFileUnknown=“g:\\Racing App\\RaceTestFileUnknown.s”;
System.IO.File.writealText(TestRaceNameFile,string.Empty);
System.IO.File.WriteAllText(TestRaceNameFileUnknown,string.Empty);
变量LinePosition2=0;
字符串UpdateFileName=File.ReadLines(@“G:\\Racing App\\Update\\all.info”).elementatOrderFault(LinePosition2);
StreamReader sr;
sr=新的StreamReader(UpdateFileName);
var set=sr.ReadToEnd();
使用(StreamReader su=File.OpenText(UpdateFileName))
{
string f=string.Empty;
而((f=su.ReadLine())!=null)
{

var GetRace=new Regex(@)(?您可能应该将Regex对象
GetRace
应用于变量
f
,如下所示:

var matchesFound = GetRace.Matches(f);
然后将您的
if
-语句基于
matchesFound
的内容
请参阅


此外,反复创建
GetRace
Regex对象也很昂贵,而且不需要。在.NET中,Regex对象可以安全地使用多次。因此,最好将行
var GetRace=new Regex(..)在while循环之前。

您可能应该将Regex对象
GetRace
应用于变量
f
,如下所示:

var matchesFound = GetRace.Matches(f);
然后将您的
if
-语句基于
matchesFound
的内容
请参阅


此外,反复创建
GetRace
Regex对象也很昂贵,而且不需要。在.NET中,Regex对象可以安全地使用多次。因此,最好将行
var GetRace=new Regex(..)
在while循环之前。

在循环中,您始终在
set
上应用正则表达式,但该变量从未更改


相反,
f
保存当前行的内容,但该变量永远不会在循环中使用。

在循环中,您始终在
set
上应用正则表达式,但该变量永远不会更改


相反,
f
保存当前行的内容,但该变量将永远不会在循环中使用。

请将代码简化为说明问题的一个片段。您是否尝试过调试此代码?是否确定您没有在某个地方缺少
读行
?您一直在重新生成相同的正则表达式,但从未应用我敢打赌你的输出是一个空行,然后是
抽奖\n\n
?@Rippo花括号是不必要的,但它们不是问题的原因。它们所做的只是在方法中添加一个额外的作用域,例如
RaceToString
没有在它们的外侧定义,但也不需要。它读取first文件,但不继续下一步请将代码简化为说明问题的一个片段。您是否尝试过调试此代码?是否确定您没有在某个地方丢失
读取行
?您一直在重建同一个正则表达式,但从未将其应用于任何内容?我敢打赌您的输出是一个空行,后面是
抽奖\n\n
?@Rippo花括号是不必要的,但它们不是问题的原因。它们所做的只是在方法中添加一个额外的作用域,例如
RaceToString
没有在其外部定义,但也不需要。它读取第一个文件,但不移动到下一个。如果我是searc,如何实现该类型的正则表达式在两个标识符之间搜索文本?不知道行(变量
f
的内容)可能是什么样子就无法分辨。那么,如果我在两个标识符之间搜索文本,如何实现这种类型的正则表达式?不知道行(变量
f
的内容)就无法分辨可能看起来像。我需要做什么,我不懂这个?我想你必须写
新正则表达式(@)(?我需要做什么,我不懂这个?我想你必须写
新正则表达式(@)(?)?