如何使用C#找出文本文件中匹配的数字和字符串

How to find out matching number and string in a text file using C#

我正在尝试从引号“ ”内的文本文件中读取一个字符串,这是一个文件路径。如果该行包含 "SSiJobPage:" 并且它与它旁边的数字匹配。就像如果该行包含 'SSiJobPage: 8',则转到 'SSiJobFileRef: 8' 所在的行并获取其旁边的文件路径,即 'C:\folderName2M032.filename.p1.pdf'。它还将 运行 直到找到所有 'SSiJobPage:' 我如何在 C# 中做到这一点?

提前致谢!!

>%SSiJobFileRef: 2 'C:\folderName0C001-3.filename.p1.pdf' 2 -1 0 0.00000 
        >%SSiJobFileRef: 3 'C:\folderName0C001-3.filename.p2.pdf' 3 -1 0 0.00000  
        >%SSiJobFileRef: 4 'C:\folderName0C001-3.filename.p3.pdf' 4 -1 0 0.00000 
        >%SSiJobFileRef: 5 'C:\folderName0C001-3.filename.p4.pdf' 5 -1 0 0.00000 
        >%SSiJobFileRef: 6 'C:\folderName0C001-3.filename.p5.pdf' 6 -1 0 0.00000
        >%SSiJobFileRef: 7 'C:\folderName0C001-3.filename.p6.pdf' 7 -1 0 0.00000  
        >%SSiJobFileRef: 8 'C:\folderName2M032.filename.p1.pdf' 8 -1 0 0.00000 
        >%SSiJobFileRef: 9 'C:\folderName[=10=]2M052.filename.p1.pdf' 9 -1 0 0.00000 
        >%SSiJobFileRef: 10 'C:\folderName2M042.filename.p1.pdf' 10 -1 0 0.00000  
        >%SSiJobFileRef: 11 'C:\folderName[=10=]2W000.filename.p1.pdf' 11 -1 0 0.00000  
        >%SSiJobFileRef: 12 'C:\folderName2B000.filename.p1.pdf' 12 -1 0 0.00000 
        >%SSiJobFileRef: 13 'C:\folderName[=10=]2W100.filename.p1.pdf' 13 -1 0 0.00000 
        >
        >%SSiJobPage: 8 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 9 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 10 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 2 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 3 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 11 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 12 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 4 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 5 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 13 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 14 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 6 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 7 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 15 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 16 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 17 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 8 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 21 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 10 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 
        >%SSiJobPage: 18 1 0.00000 0.00000 1.00000 1.00000 3 0.00000 0.00000 '' 0 

可能是这样的:

public class SSiJob
{
    public int id { get; set; }
    public string path { get; set; }
    public bool matched { get; set; }
}

        List<SSiJob> jobs = new List<SSiJob>();

        using (StreamReader sr = new StreamReader(@"D:\CYA\Test2.txt"))
        {
            string stringy;
            while ((stringy = sr.ReadLine()) != null)
            {
                string[] words = stringy.TrimStart().Split(' ');
                if (words[0] == ">%SSiJobFileRef:")
                {
                   jobs.Add(new SSiJob { id = Convert.ToInt32(words[1]), path = words[2] });

                }
                else if (words[0] == ">%SSiJobPage:")
                {
                    var check = jobs.Where(a => a.id == Convert.ToInt32(words[1])).FirstOrDefault();
                    if(check != null)
                    {
                        check.matched= true;
                    }
                }
            }
            jobs.RemoveAll(a => a.matched == false);
        }