2011-11-18 51 views
2

我正在解析具有半已知重复结构的文本文件。有一个标题(1行),一个子标题(1行或2行)和一个内容区域(任意行数)。 为文档中的各个项目的格式如下所示:使用c将文本文档划分为段#

 
========================= 
     Head Text 1 
========================= 
     SubHead Text1 
     SubHead Text2 
========================= 
Content Text Line 1 
Content Text Line 2 
... 
Content Text Line 8 

========================= 
     Head Text 2 
========================= 
     SubHead Text1 
     SubHead Text2 
========================= 
Content Text Line 1 
Content Text Line 2 
... 
Content Text Line 6 

我想每个部分是一个唯一的对象的内部,每个具有3个部分... somethign像

 
section1.head 
section1.subHead 
section1.content 

section2.head 
section2.subHead 
section2.content 

唯一我可以想到完成这件事涉及很多ifwhile陈述。有没有一种有效的方法来完成这一点?

我最初尝试在JScipt中编写一些代码,但我正在阅读RTF文件,C#提供了一种将RTF转换为纯文本的简单方法。它运行得不好,我一直跳过一些分频器,并在文件结尾处出现错误。

page = new Array(); 

fso = new ActiveXObject("Scripting.FileSystemObject"); 
f = fso.GetFile("test.rtf"); 

is = f.OpenAsTextStream(forReading, -2); 

var count = 0; 
while(!is.AtEndOfStream){ 
    page[count] = is.ReadLine(); 
    count++; ; 
} 

is.Close(); 

WScript.Echo(page[0].text); 

var item = []; 

var section = 0; 

var i = 0, k = 0; 
while (i < page.length) { 
item[k] = {}; 

    if (!page[i].indexOf("=====")) { 
     i++;  
     item[k].head = page[i]; 
     i+=2; 
     while(page[i].indexOf("=====")) { // WScript.Echo("index = " + i + " "+ page[i] +"\n" + "Next index = " + (i+1) + " "+ page[i+1] +"\n"); 
      item[k].subHead += page[i]; 
      i++; 
     } 

     k++; 

    } 
    i++; 
} 
+2

那么你试过了什么?这是一个相对简单的基于行的处理问题。 –

+1

你可以请你发布一些你已经试过的代码吗? –

+0

我想出的东西看起来非常难看,它也不能很好地工作。 – SharpBarb

回答

相关问题