我正在尝试从引文中的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
答案 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);
}