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

时间:2017-05-12 16:43:12

标签: c# system.io.file

我正在尝试从引文中的TEXT文件中读取字符串' ',这是一个文件路径。如果该行包含" SSiJobPage:"如果它匹配旁边的数字。如果该行包含' SSiJobPage:8',那么就到了SSiJobFileRef:8'并获取它旁边的文件路径,即' C:\ folderName \ 012M032.filename.p1.pdf'。它也会一直运行,直到找到所有的SSiJobPage:'我怎么能在C#中做到这一点?

提前非常感谢!!

>%SSiJobFileRef: 2 'C:\folderName\210C001-3.filename.p1.pdf' 2 -1 0 0.00000 
        >%SSiJobFileRef: 3 'C:\folderName\210C001-3.filename.p2.pdf' 3 -1 0 0.00000  
        >%SSiJobFileRef: 4 'C:\folderName\210C001-3.filename.p3.pdf' 4 -1 0 0.00000 
        >%SSiJobFileRef: 5 'C:\folderName\210C001-3.filename.p4.pdf' 5 -1 0 0.00000 
        >%SSiJobFileRef: 6 'C:\folderName\210C001-3.filename.p5.pdf' 6 -1 0 0.00000
        >%SSiJobFileRef: 7 'C:\folderName\210C001-3.filename.p6.pdf' 7 -1 0 0.00000  
        >%SSiJobFileRef: 8 'C:\folderName\012M032.filename.p1.pdf' 8 -1 0 0.00000 
        >%SSiJobFileRef: 9 'C:\folderName\002M052.filename.p1.pdf' 9 -1 0 0.00000 
        >%SSiJobFileRef: 10 'C:\folderName\012M042.filename.p1.pdf' 10 -1 0 0.00000  
        >%SSiJobFileRef: 11 'C:\folderName\002W000.filename.p1.pdf' 11 -1 0 0.00000  
        >%SSiJobFileRef: 12 'C:\folderName\012B000.filename.p1.pdf' 12 -1 0 0.00000 
        >%SSiJobFileRef: 13 'C:\folderName\002W100.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 

1 个答案:

答案 0 :(得分:1)

也许是这样的:

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);
        }